C语言显示“warning: no newline at end of file ”具体原因是因为在文件尾必须的新增一行空行,以避免include文件时,展开后与后面的文件连为一行,造成错误。
解决方法:
在c文件最后面添加上一个回车,独立成一行。(在程序代码的最后面多敲一个空行,也就是说在右括号后打个回车键。因为gcc对源文件有要求,就是c or cpp文件后面要有一个空行)。
C语言简介:
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的DMRitchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。
如果文件末尾有一个空行,注意特别注意用fgets进行读,比如文件:aaa 234 444 bbb
123 kkk 9 00 00000 0000
ccc 34
如果最后没有空行,即没有\n,读到ccc 34这行时,fgets遇到了EOF,结束,str="ccc 34\0"; 如果最后有空行;读到ccc 34这行时,fgets遇到了new line,str="ccc 34\n\0",此时文件未返回EOF,再次fgets时,遇到EOF,fgets返回NULL,str的内容没有变,因此用fgets读时判断是否该结束最好如此:
while(fgets()) {
}
而不要用
while(!feof()) {
fgets();
}fp=fopen("name","r");
while(!eof(fp))
{
fscanf("%d%d",&A,&B);
/计算输出/
}
fclose(fp);fseek(fp,0,SEEK_END);
这样就可以了
nFileSize = ftell(fp);
fseek(fp,0,SEEK_SET);
这样又移回来了
fscanf是有返回值的。如果返回EOF,证明到达文件结尾
在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。
扩展资料:
应用
档案存取或其它 I/O 功能可能传回等于象征符号值 (巨集) EOF 指示档案结束的情形发生。实际上 EOF 的值通常为 -1,但它依系统有所不同。巨集 EOF会在编译原始码前展开实际值给预处理器。
C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)