1、当使用"%d%d%d"这种输入格式时,输入可以是一个空格或者多个空格、tab键、回车键分割。输出都是正确的。
2、"%d,%d,%d"格式与"%d%d%d"格式基本相同,不同之处在"%d,%d,%d"这种格式在输入时“,”一定要紧跟输入的数字,这里输入的","一定要是英文的。
3、scanf("a=%d,b=%d,c=%d", &a, &b, &c);这里输入也要相互对应a=1,b=2,c=3。
4、scanf("%c%c%c", &a, &b, &c);这里输入时存在空格,换行等转义字符问题,因为在"%c"输入时,空格和转义字符均作为有效字符,在接收时将空格作为一个字符进行接收了(a->1,b->" ",c->2),其余的被丢弃。
5、scanf("%d", &a); scanf("%c", &c);若输入内容为1\n2则输出为1\n。因为scanf()从键盘接受数据将回车[\n]也接受了,所以c=’\n’。解决办法:第一种,.在接收第二个数之前清空缓冲区,fflush(stdin);getch();getchar();随便一个都可以,fflush(stdin)是全部清空,getchar()是清空一个字符,如果缓冲区还有多余的字符则会被正常使用,scanf("%d", &a); getchar(); scanf("%c", &c);第二种,在%c之前加入空格,空格可以吸收回车符、空格。scanf("%d", &a); scanf(" %c", &c);
6、scanf()函数不能正确接收有空格的字符串问题。接收输入数据时,遇到以下问题结束一个数据的输入:1.遇见空格、回车、跳格2.遇见宽度3.遇见非法输入。解决方法:使用%[ ](扫描字符集合),可以用来进行多个字符串的输入,并对结束符进行自定义。对于%[ ]可以^+结束标志(可以使任意字符,代表着输入这个字符就终止对字符串的读取),eg:scanf("%[^\n]", arr);