回 帖 发 新 帖 刷新版面

主题:[讨论]纠结的C问题,难道又是编译器造成的?

int a[10]={1,3,4,2,10,5,9,7,6,8};
    int b[10];
    FILE* fout;
    fout=fopen("in.dat", "w");
    for(i=0; i<10; i++)
    fprintf(fout, "%d ", a[i]);
    fclose(fout);
    FILE* fin;
    fin=fopen("in.dat", "r");
    for(i=0; i<10; i++)
    fscanf(fin, "%d", &b[i]);
    fclose(fin);
    for(i=0; i<10; i++)
    printf("%d ", b[i]);
    printf("\n");

    这是一个简单的文件写入读出的代码,问题是在linux上编译没问题,但在VC6上编译出错,在FILE* fin那里出错。

如果把FILE* fin这段代码改在和FILE* fout一起,删除原有的FILE* fin;这句,就是用一句话来定义: FILE* fout, *fin;   改成这样后,再去VC6编译,也没错了。

实在不明白,在VC6中一起定义和分开定义会有什么区别?

回复列表 (共2个回复)

沙发

VC(即使是最新的版本)都不支持当前的C语言标准,它支持的好像是古老的C89
但你的代码本身也有错误,i未定义

板凳

i有定义,复制的时候给删掉了,这是从一段代码中截的

我来回复

您尚未登录,请登录后再回复。点此登录或注册