[問題] getchar() 讀不到字元

看板C_and_CPP (C/C++)作者 (new)時間14年前 (2011/07/26 20:25), 編輯推噓7(7018)
留言25則, 7人參與, 最新討論串1/2 (看更多)
各位好, 我用的是 gcc compiler 不知為何, 以下的程式中 getchar() 會讀不到字元 ///////////// 以下為程式 ////////////////// #include <stdio.h> #include <string.h> int main(){ int n; scanf("%d",&n); printf("n = %d\n",n); char c; c = getchar(); putchar(c); return 1; } //////////// 以上為程式 //////////////////// 但是以下這樣做又無誤 //////////// 以下為程式 //////////////////// #include <stdio.h> #include <string.h> int main(){ char c; c = getchar(); putchar(c); printf("\n"); int n; scanf("%d",&n); printf("n = %d\n",n); return 1; } //////////// 以上為程式 //////////////////// 請各位指點, 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.233.7.208

07/26 20:26, , 1F
[Enter] = '\n'
07/26 20:26, 1F

07/26 20:29, , 2F
輸入數值enter 後, 程式直接停止執行.
07/26 20:29, 2F

07/26 20:40, , 3F
會不會是輸入數值後的 enter 被判讀成兩次 enter?
07/26 20:40, 3F

07/26 21:37, , 4F
因為'\n'留在 buffer 內 書上一定有寫 沒有請丟掉
07/26 21:37, 4F

07/26 21:43, , 5F
!! 我誠心想請教 s 大,哪本書有寫 ?
07/26 21:43, 5F

07/26 21:53, , 6F

07/26 21:57, , 7F
感謝 f 大,這問題還是我寫查 ascii 才發現的 XD
07/26 21:57, 7F

07/26 21:57, , 8F
告訴我 哪本書沒寫 C library 是 buffered I/O ?
07/26 21:57, 8F

07/26 22:05, , 9F
最好是都有寫...
07/26 22:05, 9F

07/26 22:12, , 10F
不管怎樣,原PO的問題翻 C Primer Plus 即可
07/26 22:12, 10F

07/26 22:15, , 11F
好吧 那代表台灣不好的書太多了
07/26 22:15, 11F

07/26 22:16, , 12F
@stonehomelaa: scanf是不是buffered要看環境...
07/26 22:16, 12F

07/26 22:16, , 13F
我不該假設大家都有幸看到像樣的入門書 ~"~
07/26 22:16, 13F

07/26 22:28, , 14F
stdin 未必是 buffered?? 我不知道 @@
07/26 22:28, 14F

07/26 22:29, , 15F
我忘了我看的是哪本,那本 turbo C 被我丟了 XD
07/26 22:29, 15F

07/26 22:36, , 16F
假如stdin永遠是line buffered
07/26 22:36, 16F

07/26 22:37, , 17F
就不能這樣玩了 http://codepad.org/WgyOdcqe
07/26 22:37, 17F

07/26 22:38, , 18F
那只是改terminal的屬性而已...
07/26 22:38, 18F

07/26 22:42, , 19F
當然還有一些本來stdin就可能是line or full or none buf
07/26 22:42, 19F

07/26 22:45, , 20F
C library有buffer這個概念,可是真正意義要參考實作文件
07/26 22:45, 20F

07/26 22:45, , 21F
我想起了 loveflames 的文章 #1Cvm6WUk
07/26 22:45, 21F

07/26 22:49, , 22F
當stdin連結到「互動裝置」時保證不是fully buffered但是
07/26 22:49, 22F

07/26 22:49, , 23F
那應該只有說stdout和stderr吧
07/26 22:49, 23F

07/26 22:49, , 24F
什麼才算互動裝置呢?還是要看實作的文件...
07/26 22:49, 24F

07/26 22:51, , 25F
terminal
07/26 22:51, 25F
文章代碼(AID): #1EBh9Ekl (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1EBh9Ekl (C_and_CPP)