[問題] C語言Getchar算字數

看板C_and_CPP (C/C++)作者 (小雞)時間9年前 (2016/06/10 00:53), 編輯推噓3(3011)
留言14則, 8人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Codeblock10.5 C語言 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) None 問題(Question): 算字數無反應 餵入的資料(Input): 123abcd 預期的正確結果(Expected Output): 7 錯誤結果(Wrong Output): 無反應 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> main( ) { long nc; nc=0; while (getchar()!=EOF); ++nc; printf("%ld characters\n",nc); } 補充說明(Supplement): 有爬過文 有類似的 有Google過 http://www.programmer-club.com.tw/ShowSameTitleN/c/14550.html 有人使用dev-c++執行也不行 初學C不好意思 請各位大大幫忙解答 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.151.155 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1465491235.A.321.html

06/10 00:55, , 1F
EOF不是檔案結尾用的嗎?
06/10 00:55, 1F

06/10 01:11, , 2F
你while結尾分號之後下一行++nc就不在迴圈裡了啊…
06/10 01:11, 2F

06/10 02:21, , 3F
你while後面有個分號...
06/10 02:21, 3F

06/10 09:32, , 4F
從鍵盤輸入字串,可以使用 gets()
06/10 09:32, 4F

06/10 09:46, , 5F
感謝各位 但把While後面的分號移掉 試起來還是一樣..冏
06/10 09:46, 5F

06/10 10:08, , 6F
去掉括號之後程式是對的,但是你應該是忘了送出 EOF
06/10 10:08, 6F

06/10 10:09, , 7F
*nix 下按 Ctrl+D Windows 下按 Ctrl+Z
06/10 10:09, 7F

06/10 10:09, , 8F
根據你的執行環境用ctrl+z或ctrl+d送eof
06/10 10:09, 8F

06/10 10:13, , 9F
感謝樓上兩位 但比如說輸入1234ABC按Enter後 在按下Ctrl+Z
06/10 10:13, 9F

06/10 10:14, , 10F
樹出應該要是7 characters 但出來會變8 characters
06/10 10:14, 10F

06/10 10:15, , 11F
如果直接送出Ctrl+Z 那答案會是對的0 characters
06/10 10:15, 11F

06/10 10:26, , 12F
因為enter也是一個字元,也就是'\n'
06/10 10:26, 12F

06/10 10:27, , 13F
getchar 也會算 newline character
06/10 10:27, 13F

06/10 10:31, , 14F
了解了 感謝大家
06/10 10:31, 14F
文章代碼(AID): #1NMPyZCX (C_and_CPP)
文章代碼(AID): #1NMPyZCX (C_and_CPP)