fgetc在linux与windows下对ASCII 26的差异有关问题
fgetc在linux与windows下对ASCII 26的差异问题
这个代码在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.****.net/u/20090706/22/10a2a1c6-8cd2-4b26-858b-2c20cbc97242.html
另个,换行(\n)在windows的文本下也与二进制不同,它会变成\n\r两个字符
可参考:
http://blog.****.net/dbzhang800/article/details/6430280
------解决方案--------------------
- 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.****.net/u/20090706/22/10a2a1c6-8cd2-4b26-858b-2c20cbc97242.html
另个,换行(\n)在windows的文本下也与二进制不同,它会变成\n\r两个字符
可参考:
http://blog.****.net/dbzhang800/article/details/6430280
------解决方案--------------------