fgetc在linux与windows下对ASCII 26的差异有关问题
fgetc在linux与windows下对ASCII 26的差异问题C/C++ code#includeiostream#includefstream#includest
fgetc在linux与windows下对ASCII 26的差异问题
C/C++ code#include<iostream>#include<fstream>#include<string>using namespace std;int main(int argc, char*argv[]){ fstream testfile("test.txt",ios::out|ios::out|ios::binary); int a = 0; int nums[1000]; for(; a < 256; a++) { testfile.write((char *) &a, 1); } testfile.close(); FILE* fp = fopen("test.txt", "r"); int temp; int i = 0; while(true) { temp = fgetc(fp); if (temp == EOF) break; i++; } cout << i << endl; fclose(fp); return 0;}
这个代码在linux上面的输出是:256
在windows上是:26
我的Linux信息:Linux version 2.6.18-274.3.1.el5 (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-51)) #1 SMP Tue Sep 6 20:14:03 EDT 2011
windows是用vs2010编译的
请高手解释一下。
[解决办法]楼主知道什么叫“文本”模式么?
知道什么叫“二进制”模式么?
[解决办法]看一下以前的贴,里面讨论的比较全
http://topic.csdn.net/u/20090706/22/10a2a1c6-8cd2-4b26-858b-2c20cbc97242.html
另个,换行(\n)在windows的文本下也与二进制不同,它会变成\n\r两个字符
可参考:
http://blog.csdn.net/dbzhang800/article/details/6430280
[解决办法]