[問題] getchar()讀到的資料

看板C_and_CPP (C/C++)作者 (阿美)時間16年前 (2010/04/19 22:45), 編輯推噓7(708)
留言15則, 6人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) char token; int data; while((token=getchar())!='\n'){ data=atoi(&token); printf("%d",data); //system("pause"); i++; } 想要輸入一段數字之後 將字元轉成數字後印出 但是實際跑的時候 有時候中間會夾雜0 像是輸入 123456 (之後按enter) 印出來卻是 1234056 如果打一長串 11111111111111111111111111 也是會偶爾出現0 111101111111111110111111111 奇怪的是中間如果加上 system("pause")之後就不會有這個現象 很好奇到底是為什麼?? 感謝各位高手解答 謝謝 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.246.94

04/19 22:52, , 1F
沒記錯的話 atoi 的參數字串 尾巴要有個 '\0' ?
04/19 22:52, 1F

04/19 22:54, , 2F
樓上正解!!
04/19 22:54, 2F

04/19 23:00, , 3F
可是 我剛剛用g++去run 好像沒問題耶?
04/19 23:00, 3F

04/19 23:01, , 4F
一時好運沒撞到問題而已....@_@"
04/19 23:01, 4F

04/19 23:02, , 5F
喔喔 xd 原來如此 感謝樓上
04/19 23:02, 5F

04/19 23:53, , 6F
感謝回答
04/19 23:53, 6F

04/20 01:26, , 7F
getchar()回傳的是int,不要用char去接收,這是不好的用法
04/20 01:26, 7F

04/20 12:14, , 8F
樓上?
04/20 12:14, 8F

04/20 12:45, , 9F
getchar()的確是回傳int, 不過查網頁的sample通常也都直
04/20 12:45, 9F

04/20 12:45, , 10F
接用char接, 不然就幫它加個顯示轉型囉XD
04/20 12:45, 10F

04/20 12:56, , 11F
我好奇的是「不好的用法」getchar()會傳回大於char的int嗎
04/20 12:56, 11F

04/20 12:58, , 12F
sa~~ EOF 算嗎XD
04/20 12:58, 12F

04/20 15:51, , 13F
剛剛試了一下用int接 回傳的是ASCII碼 還是要轉換才
04/20 15:51, 13F

04/20 15:52, , 14F
能變原來的數字Orz
04/20 15:52, 14F

04/20 16:43, , 15F
樓上你的描述怪怪的喔, 你用char接也一樣是ASCII碼:)
04/20 16:43, 15F
文章代碼(AID): #1Bp6oS4m (C_and_CPP)
文章代碼(AID): #1Bp6oS4m (C_and_CPP)