我正在嘗試使用 K&R 學習 c,但遇到了問題;不是所有的鱈魚似乎都被執行了?
我在 1.5.2:字符計數;我認為這是該示例的確切措辭:
#include <stdio.h>
/* count characters in input; 1st version */
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
nc;
printf("%ld\n", nc);
}
它應該接受輸入,計算字符數直到 EOF 字符,然后只列印總數。
但是,一旦我在終端中編譯并運行它,它似乎什么也沒做:
eli@eli-Laptop:~/programing$ gcc hello.c -o hello
hello.c:4:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
4 | main()
| ^~~~
eli@eli-Laptop:~/programing$ ./hello
test
testonetwo
^C
eli@eli-Laptop:~/programing$
這是一個奇怪的失敗模式,所以我嘗試評論它:
#include <stdio.h>
/* count characters in input; 1st version */
main()
{
long nc;
nc = 0;
printf("start, is %ld\n ");
while (getchar() != EOF){
nc;
printf("middle; so far is %ld\n", nc);
}
printf("end; is %ld\n");
}
但是,當我嘗試時,我得到了這個:
eli@eli-Laptop:~/programing$ ./hello
start, is 0
test
middle; so far is 1
middle; so far is 2
middle; so far is 3
middle; so far is 4
middle; so far is 5
test2
middle; so far is 6
middle; so far is 7
middle; so far is 8
middle; so far is 9
middle; so far is 10
middle; so far is 11
^C
eli@eli-Laptop:~/programing$
這讓我很難過;看起來一旦while退出程式就完成了?當我放其他東西時,它看起來只運行了while回圈;一開始,總數沒有重置,列印也沒有運行,最后最終的列印仍然沒有運行。
我是沒有 IDE 的編程新手,所以這可能只是不知道命令列如何作業的問題。
uj5u.com熱心網友回復:
當您按下 ctrl-C 時,您的終端會向您的程式發送 SIGINT(中斷)信號。默認情況下,這會終止程式。
要告訴您的程式它已到達輸入的末尾,您需要按 ctrl-D 代替。getchar()然后將回傳EOF并且回圈將退出。
uj5u.com熱心網友回復:
對于根據 C 標準的初學者,不帶引數的函式 main 應宣告為
int main( void )
要生成 EOF 條件,您需要按 Ctrl d 或 Ctrl c,具體取決于您使用的是 UNIX 系統還是 Windows 系統。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/420518.html
標籤:
