fgetc在linux与windows下对ASCII 26的差异有关问题

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.****.net/u/20090706/22/10a2a1c6-8cd2-4b26-858b-2c20cbc97242.html
另个,换行(\n)在windows的文本下也与二进制不同,它会变成\n\r两个字符
可参考:
http://blog.****.net/dbzhang800/article/details/6430280

------解决方案--------------------
探讨

引用:

简单说一下吧(建议看下有关资料)
windows 下,读文本文件时(缺省的文件打开方式),如果遇到ascii 26(0x1a ctrl-Z),就会返回EOF
这个是规定
也可以说,ascii 26是windwos下文本文件的结束符


多谢这位兄弟。请问相关资料推荐吗?感觉这个规定有些奇怪,
从上面的结果来看,linux下面好像没有类似这种规……