关于scanf输入的值与我输入的值不匹配

#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输入识别按字符的

img

你输入的是全角字符逗号,必须和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;
}