2010-12-18 242 views
0
#include <stdio.h> 
main() 
{ 
    int c; 
    while ((c = getchar()) != EOF) 
    putchar(c); 
} 

在上面的代码中,哪个字符会打断循环?
我是C新手,请帮帮我。
此外,它是什么意思这个错误:
codec5.c:8:2: warning: no newline at end of fileC中的“文件结尾”是什么意思?

+2

请不要全部写在帽子上..它意味着选择! – Shoban 2010-12-18 23:35:18

+0

只是我吗?!你的大写锁定卡住了吗? – 2010-12-18 23:35:55

+0

编辑您的帖子,以防止我的眼睛流血 – SiegeX 2010-12-18 23:36:25

回答

0

错误是通过把一个换行符在文件的结尾解决(把光标}背后按回车键)。

我认为循环是用Ctrl + Z打破的,但我不确定。

+1

当到达文件末尾时,循环被破坏,而不是特殊字符。一些遗留实现通过使用特殊字符标记结束来实现文件结束(对于文本文件),而不是将文件的确切长度存储在文件系统簿记信息中,但那些日子早已过去。 – 2010-12-18 23:38:31

+0

谢谢。帮助 – 2010-12-18 23:47:38

+0

终于明白了......我的意思是(处理EOF的方式)在程序中。 – 2010-12-19 19:23:39

0

这是stdio.h定义的特殊常量,这意味着文件结束。

codec5.c:8:2: warning: no newline at end of file

听起来像是你没有\n你的文件:年底做

1

该警告只意味着您需要在源代码的末尾添加一行新行。将光标放在main()末尾的文件末尾}处,然后按回车。

如果不从文件加载,您需要检查特定字符以结束程序。如果你在你的程序中输入(|)(Windows中的<)文件,那么程序应该结束。如果程序名为test.exe,输入文件为foo.txt,请尝试运行test.exe < foo.txt(确保它们位于同一目录中)。

+0

我可以管程序中的文件...使用Windows ??? ..我不是在linux上工作.. – 2010-12-18 23:42:35

+0

请参阅编辑上面(<是Windows中的管道)。 – zsalzbank 2010-12-18 23:44:53

+0

我可以有一小段代码与此有关吗? – 2010-12-18 23:48:18