[問題] getchar()串流

看板C_and_CPP (C/C++)作者 (嫩b福)時間13年前 (2012/10/18 00:31), 編輯推噓2(208)
留言10則, 5人參與, 最新討論串1/1
程式碼 int c; while( (c = getchar()) != EOF ) printf( "%c\n", c ); 假使我輸入:abc在按enter. 輸出:97 98 99 10 迴圈沒有終止,這我懂. 但是我輸入:abc^Z在按enter. (^Z = ctrl+z, windows) 輸出:97 98 99 這邊10沒有輸出,迴圈也沒有停 請問為什麼讀到到^Z迴圈不會停? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.182.170

10/18 00:53, , 1F
因為他回傳 26 (0x1A) 給你
10/18 00:53, 1F

10/18 01:24, , 3F
printf( "%c\n", c ); --> printf( "%d\n", c ); ??
10/18 01:24, 3F

10/18 01:30, , 4F
@linotwo : 不過我有問題了,怎麼判斷 Ctrl+Z 會送出哪個?
10/18 01:30, 4F

10/18 01:57, , 5F
while((c = getchar()) != EOF && c != 26)
10/18 01:57, 5F

10/18 10:26, , 6F
原來如此,那怎麼判斷Ctrl+z 是-1 or 26?
10/18 10:26, 6F

10/18 10:46, , 7F
Ctrl-z 沒有回傳 -1 的可能吧
10/18 10:46, 7F

10/18 13:10, , 8F
10/18 13:10, 8F

10/18 13:20, , 9F
10/18 13:20, 9F

10/18 22:31, , 10F
感謝樓上詳解
10/18 22:31, 10F
文章代碼(AID): #1GVjrbOg (C_and_CPP)
文章代碼(AID): #1GVjrbOg (C_and_CPP)