#pragma warning(disable:4996)
#include
int main()
{
int a, b;
printf("请输入两数");
scanf("%d,%d",&a,&b);
printf("%d,%d",a, b);
if (a >= b)
{
if ((a - b) > 1)
{
puts("赶紧回家");
}
else {
printf("稳住心态");
}
}
else
{
if (b - a > 100)
{
puts("好好学习");
}
else {
puts("开摆!");
}
}
return 0;
}
为什么输入1,2后,打印出来的a,b值分别为1,-858993460
这里任何的回车以及不匹配都需要注意的 ,printf有缓冲区 scanf输入识别按字符的
你输入的是全角字符逗号,必须和scanf语句中一样用半角字符逗号
仅输入合法校验这一项功能就够程序员吃一辈子了。
#include <stdio.h>
int main()
{
int a,b,n,v,r,k;
char buf[80];
char *p;
k=0;
r=EOF;
while (1) {
if (EOF==r) {
fgets(buf,80,stdin);
p=buf;
}
while (1) {
r=sscanf(p,"%d%n",&v,&n);
if (1==r) {k++;break;}
if (EOF==r) break;
p++;
}
if (EOF==r) continue;
p+=n;
if (1==k) a=v;
if (2==k) {
b=v;
break;
}
}
printf("%d,%d\n",a,b);
return 0;
}