码迷,mamicode.com
首页 > 其他好文 > 详细

fprintf、fscanf读写乱码的问题

时间:2014-08-18 10:53:04      阅读:395      评论:0      收藏:0      [点我收藏+]

标签:c   博客   文件系统   乱码   优化   

前几天写类linux文件系统的时候,被这个搞死了,今天终于弄懂了

  这是cpp文件

  #include

  #include

  #include

  #include

  using namespace std;

  char ch[250];

  struct s{

  short a, b;

  };

  int main(){

  FILE *file = fopen("test.txt", "wt+");

  s st;

  st.a = 1, st.b = 2;

  fseek(file, 0, 0);

  fwrite(&st, sizeof(short), sizeof(st) / sizeof(short), file);

  //fseek(file, 0, 0);

  //fread(&st, sizeof(short), sizeof(st) / sizeof(short), file);

  char temp[256] = "flaf";

  int c = 0x11110011;

  fseek(file, sizeof(st), 0); //加上这一句结果就不一样了

  fprintf(file, "%s", temp);

  //fputs(temp, file);

  fwrite(&c, sizeof(int), 1, file);

  fseek(file, sizeof(st), 0);

  //fgets(temp, sizeof(temp), file);

  fscanf(file, "%s", temp);

  fread(&c, sizeof(int), 1, file);

  cout << temp <<" "<< c << endl;

  fclose(file);

  system("pause");

  return 0;

  }

  先在文件里面写了个结构体,然后写入一个字符串“flat",再写入一个ini型整数c

  结果在读取字符串的时候,后面总是跟有乱码,而且整数c也总是有时读得对有时错,就像这样

   

bubuko.com,布布扣

  这里有一个点很关键,可我一直都没意识到,字符串结束符\0其实在fprintf的时候是不会printf出来的,就像你在屏幕上看不到那个\0一样,fprintf只是把屏幕上的效果反映到文件里而已

fprintf、fscanf读写乱码的问题,布布扣,bubuko.com

fprintf、fscanf读写乱码的问题

标签:c   博客   文件系统   乱码   优化   

原文地址:http://blog.csdn.net/qq_19522245/article/details/38655817

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!