scanf、printf输入输出

https://blog.csdn.net/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)

{.............}

猜你喜欢

转载自blog.csdn.net/qq_40865837/article/details/81183383