Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1589348
  • 博文数量: 441
  • 博客积分: 20087
  • 博客等级: 上将
  • 技术积分: 3562
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-19 15:35
文章分类

全部博文(441)

文章存档

2014年(1)

2012年(1)

2011年(8)

2010年(16)

2009年(15)

2008年(152)

2007年(178)

2006年(70)

分类: C/C++

2007-03-22 22:58:54

   今天看了孙鑫老师的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;  
}

阅读(2462) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~