一段写悲剧的代码:
FILE *fp;
fp = fopen("1.txt", "w+");
unsigned char writetofile[256];
for (int i = 0; i < 256; i++)
{
int tmp = i;
cout<<tmp<<"\t";
fwrite(&tmp,sizeof(int),1 ,fp);
}
fclose(fp);
cout<<endl;
fp = fopen("1.txt", "r");
for (int i = 0; i < 256; i++)
{
int tmp;
fread(&tmp,sizeof(int),1 ,fp);
cout<<tmp<<"\t";
}
cout<<endl;
fclose(fp);
大家可以测试发现,读回来后数值发生了悲剧!
下面附上正确的写法:
FILE *fp;
fp = fopen("1.txt", "w+b");
unsigned char writetofile[256];
for (int i = 0; i < 256; i++)
{
int tmp = i;
cout<<tmp<<"\t";
fwrite(&tmp,sizeof(int),1 ,fp);
}
fclose(fp);
cout<<endl;
fp = fopen("1.txt", "rb");
for (int i = 0; i < 256; i++)
{
int tmp;
fread(&tmp,sizeof(int),1 ,fp);
cout<<tmp<<"\t";
}
cout<<endl;
fclose(fp);
O(∩_∩)O~ 这个c++测试代码悲剧了2个小时!