1.设置字符集,读取的时候好处理中文 2.可能对于空格等自动截取了 3.一个是UNICODE字符串,一个是ANSI字符串,两者之间需要编码转换 ---解决方案--- C/C++ codeCFile file(L"c:\\test.txt",CFile::modeRead);char *pBuf;int iLen=file.GetLength();pBuf=new char[iLen+1];file.Read(pBuf,...
1.2 Linux系统默认编码 大多数Linux系统默认使用UTF-8编码,如果程序中使用了其他编码方式,而未进行适当的转换,就可能导致乱码。 1.3 C语言中的字符串处理 C语言中的字符串是以字节数组的形式存储的,本身并不包含编码信息,如果读取或写入文件时没有正确处理编码,就会出现乱码。 解决方法 2.1 确定文件编码 在处理文本...
1. 你是想输入26个字母吧,那缓冲区长度不够,结尾要预留一个'\0'字符,char str[26] 至少要改成 char str[27]2. 将字符输入文件时,不要写最后一个字符'\0', fwrite(str,1,27,fp) 改为 fwrite(str,1,26,fp); 原因是,文本文件当中是无须'\0'的,可能会导致乱码 3 字符读出来了...
这种文本文件,不能直接使用读到结构的方法。因为结构里会有非文本的控制符,比如字符串结束符'\0'。一般使用直接读到结构的方法,只限于二进制格式的文件,并且最好是读自己创建的文件,别人创建的,格式刚刚好合适创建结构的也很少。你这个乱码,你的文件里,学号长度为10个字节,所以你定义学号这个变量...
0xE4和0xBD对应‘浣’,0xA0和0xE5对应‘犲’,0xA5和0xBD对应‘ソ’,也就产生了“乱码”现象。
这个是编码方式问题,最常见的原因是UTF-8的BOM引起的。写文件的时候需要先输出BOM再写入UTF-8的数据就OK,但是记事本可以识别不带BOM的文本。
有两种保存方式:文本方式,二进制方式如果是二进制方式看到的是乱码.
乱码啊,中文读写一般要转码,什么UTF8之类的
fp = fopen(filename, "ab+"); /*以读写方式打开二进制文件*/ 你自己的说了是以二进制输入文件 你为嘛还想还能打开看到正常数据。你写一个测试程序, 从文件读出来数据。输入到屏幕,看看是否数据正常就好了。