https://blog.youkuaiyun.com/21aspnet/article/details/174326
cstdio是将stdio.h的内容用C++头文件的形式表示出来。stdio.h是C标准函数库中的头文件。
(在c++的编译器里面用cstdio,或cstdio.h都可以)
①scanf在输入整数时,可跳过输入整数之间的空白符(输入时,在两个数据之间可以用一个或多个空格、tab键、回车键分隔。)
#include <stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%d%d%d",a,b,c);
return 0;
}
注意:如果如下情况,要读到3,4
scanf("a=%d,b=%d",&a,&b);
输入: a=3,b=4 ↙("a=","b=",逗号与"%d,%d"中的"a=","b="及逗号对应)①
②但在用"%c"输入时,空格和“转义字符”均作为有效字符,不能忽略。
③
//这里scanf后面多了一个回车符
结果要输入两个数程序才结束,而不是预期的一个。why?
原因:用空白符结尾时,scanf会跳过空白符去读下一个字符,所以你必须再输入一个数。这里的空白符包括空格,制表符,换行符,回车符和换页符。所以如果你用scanf( "%d ",&a) //scanf后面多了一个空格,也会出现同样的问题。
解决方法:写scanf( "%d",&a);
④
#include <stdio.h>
int main()
{
char str[80];
scanf("%s",str);
printf("%s",str);
return 0;
}
输入:I live you!
输出:I
读入字符串,遇到空白符会停止。
用如下代码好像就可以_(:з」∠)_(没试过)下次遇到这种输入,就别用scanf算了
#include "stdio.h"
int main()
{
char string[50];
/*scanf("%s",string);不能接收空格符*/
scanf("%[^/n]",string);
printf("%s/n",string);
return 0;
}
⑤
如果为了循环输入,为了不输错(出现scanf锁死情况?),可用如下代码:
while(scanf(.......)!=EOF)
{.............}