2010-12-18 241 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