一、标准输入函数
int scanf(const char *format, ...); //从键盘中获取一个数据
int getchar(void); //从键盘中获取一个字符
- scanf( ) 函数:
- 特点:只会获取于format 对应的数据格式,格式不同的,将不会获取。
- 因此在使用的scanf( )时候,一般直接格式连续写。如:scanf("%d%d%d", &a,&b,&c);
- getchar()函数:
- 特点:从键盘获取一个字符,将输入缓存中断所有数据当做是字符串来处理,每次只拿走一个字符的数据
- 常见用法:
- while(getchar() != '\n');//清空缓存区
例:
若输入与scanf()的内不对应的格式,如输入10 20 30 而不是10,20,30
#include<stdio.h>
void main()
{
int a,b,c;
scanf("%d , %d, %d", &a, &b, &c);
printf("a = %d , b = %d , c = %d \n", a,b,c);
}
则输出如图所示:
二、标准输出函数
int printf(const char *format, ...);//根据format的格式数据输出,输出到显示器中。
- printf()函数:
- 在使用printf的时候,有时候会出现打印不出来数据的情况,这是由于:
- printf中有没有’\n’,因为对于printf函数而言,它只是将打印内容输出到标准输出流中stdout,但stdout只有在遇到’\n’的时候才会最终输出到打印设备;
- 对于特定场景下不需要添加’\n’的情况,printf函数之后添加fflush()函数,以及时打印输出内容;
- 解决printf打印不出数据的方法:
- 在结尾后加入'\n' ,如: printf("I Love China '\n'");
- 在结尾不加'\n' ,直接使用fflush(stdout) , 将存在输出缓存区中的数据强制刷出来。
例:
使用printf()函数时,打印不出数据的代码如下:
#include<stdio.h>
void main()
{
while(1)
{
printf("I love China");
sleep(1);//睡眠1s
}
}
输入结果如图所示:
其中printf函数并没有打印出对应的字符串。
例:
使用解决方法后,输出结果如图所示:
- 在printf()函数后面直接加入'\n'
- 不加'\n' , 在printf()函数后面使用 fflush(stdout) , 输出结果如图所示: