作者otomoyox (想)
看板C_and_CPP
標題[問題] scanf 測資結尾
時間Sun Dec 9 09:50:24 2012
問題(Question):
測資的結尾並沒有'\n'
但用gdb跑的時候,gdb顯示c最後吃進了一個'n'
為什麼最後會吃進'\n'呢@@?
先感謝好心人幫忙解惑了 <(_ _)>
餵入的資料(Input):
asdf
預期的正確結果(Expected Output):
-----------
1 a
1 s
1 d
1 f
-----------
錯誤結果(Wrong Output):
-----------
1 a
1 s
1 d
1 f
1
-----------
程式碼(Code):(請善用置底文網頁, 記得排版)
#include<stdio.h>
int main(){
int t;
char c;
while((t=scanf("%c",&c))==1)
{
printf("%d %c\n",t,c);
}
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.204.110
※ 編輯: otomoyox 來自: 140.119.204.110 (12/09 10:23)
推 LPH66:你是怎麼餵測資的? 12/09 10:28
→ otomoyox:./a.out < test.dat 12/09 10:39
推 LPH66:那個檔案如果最後有一個空行就表示它的確有一個'\n'在最後 12/09 11:46
→ LPH66:不過我記得有些編輯器會在最後沒有換行字元時補一個上去就是 12/09 11:51
→ otomoyox:那可能就是編譯器的問題了~ 12/09 12:44
→ DEATHX: 編輯器 12/09 17:24
→ otomoyox:感謝修正! 我用的是vim 剛剛google了一下,確實會補'\n'~ 12/09 18:36
→ MOONRAKER:你在linux下應該有hexdump好用吧,可以用hexdump -C 看 12/10 14:04
→ otomoyox:moon大的意思是@@? 其實不懂hexdump ORZ 12/13 15:57