今天看了孙鑫老师的VC++视频,看到有这么一个问题:
把数字98341写入到一个文件当中,然后用任何的文本编辑器都可以看到的字样是“98341”。乍一看,问题很简单,于是没等我把视频看完就写下了下面的测试程序:
#include
int main()
{
int a = 98341;
FILE *pFile = fopen("test.txt","w");
fwrite(&a, 4, 1, pFile);
fclose(pFile);
return 0;
}
结果打开文件一看,居然是一堆乱码,于是就接着看了一下视频,看看原因是什么,原来数字98341在内存中存储的是25 80 01 00 (十六进制),而写入的时候写的也是这四个数字,而在文本文件中则给把这个四个数字转换为对应的字符,于是我们就看到了乱码。
问题的解决方法就是写入的时候,我们写入数字字符,而不是数字,这样我们看到的就会是我们想看到的98341。
#include
int main()
{
int a = 98341;
char sza[5];
FILE *pFile = fopen("test.txt", "w");
itoa(a, sza, 10);//将数字98341转换为字符串“98341”存放在sza中
fwrite(sza, 5, 1, pFile);
fclose(pFile);
return 0;
}
阅读(2504) | 评论(4) | 转发(0) |