求助 linux下feof的问题

来源:百度知道 编辑:UC知道 时间:2024/06/21 17:25:20
这是我一个加密程序的代码。程序的功能是把in.txt中的内容进行加密然后输出到out.txt中。调用一个我写的函数加密
以下是我的代码(加密函数部分略)。
char encrypt(char ch,int n);
int main(){
int n;
FILE*fin, *fout;
scanf("%d", &n);
if((fin = fopen("in.txt", "r")) == NULL)
exit(0);
if((fout = fopen("out.txt", "w")) == NULL)
exit(1);
while(!feof(fin)){
fputc(encrypt(fgetc(fin),n),fout);
}
fclose(fin);
fclose(fout);
return 0;
}

我在vc++6.0和dev— c++中跑都没有问题,但提交到我们学校的评测系统上就一个测试点也过不了,他用的是linux系统。
后来我将while(!feof(fin))这句改为while((c = fgetc(fin)) != EOF)再提交就通过了所有测试点,后来查了一下说是feof是当作宏来用的,但linux中feof却实现为函数。
那么请问linux下feof应该如何使用,我那么写为什么就出问题呢?
ps:由于测试平台不同我写好感觉没问题的程序有时提交上去会一个测试点也不能通过甚至编译不能通过死循环等等。那么请问linux下c编程和windows下到底还有哪些差别呢?
初学编程,见笑于大方之家了。谢谢
另外,还想问一下在csdn上在哪个版块提问最好啊,我是在论坛提问的很久都没有回复。

wlm_jxj,jiangtao9999,感谢您的回答。您建议我用gcc,但dev c++不就是移植到w

Windows 的 VC++ 已经超出 ANSI C 的标准范畴。所以所谓的 C++ 标准对于微软的产品没有任何意义。

所以,楼主你就当 VC++ 和 Linux 下的 C 是两个语言就行了……

他们之间有很多不不通用的地方,这也是为什么 Linux 下面往 Windows 移植程序,都用 gcc 环境编译。而没人喜欢用 VC 。
------------
gcc 前端时间加强了语法检查,很多旧版本能用的代码现在都需要符合 gcc 语法规范才行,而且 gcc 的 Windows 移植应该还叫 gcc 才对。本来 gcc 就是多平台的……

UNIX里面是为了判断是否到文件尾,包括最后空行,LINUX是不是这样,我不清楚.