在编写算术表达式简化器时,我只是观察到这种奇怪的行为。重建是以下问题: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