在編寫算術表達式簡化器時,我只是觀察到這種奇怪的行爲。重建是以下問題:scanf讀取加整數但不是減號,乘法或除法符號
#include <stdio.h>
int main(void)
{
int n, i;
char s[200];
for(i=0;i<2;i++){
if(scanf("%d", &n) == 1)
{
printf("%d\n", n);
} else {
scanf("%s", s);
printf("%s\n", s);
}
}
return 0;
}
如果輸入5+10
它讀取n
5
和s
10
。但是,對於其他標誌,即5-10
,其在5
中的n
和-10
的s
中是預期的輸出。
我的問題是:哪些C功能造成這種情況?檢查:gcc版本4.8.2和ideone。
編輯
的整數字符閱讀解決了焦炭的問題。謝謝你的時間。 :)
如果有人有興趣:http://ideone.com/rOPyQD
查看[scanf](http://linux.die.net/man/3/scanf)手冊頁,特別是格式字符串解釋。 – Jens
@Jens也許我不夠好找到我的答案。閱讀之前和現在。 :( – silentboy
@ user3121023親愛的先生,這個程序只需要兩個輸入,要麼5 + 10或5-10。沒有理由沒有什麼會在s中掃描 – silentboy