C语言学习笔记 ——格式化IO
2023-09-11 14:21:43 时间
一、标准输入函数
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) , 输出结果如图所示:
相关文章
- C语言笔记
- 【C语言入门教程】3.3 条件控制语句
- 用C语言实现中文到unicode码的转换
- ZZNUOJ_C语言1042:数列求和3(完整代码)
- ZZNUOJ_C语言1099:角谷猜想(多实例测试)(完整代码)
- ZZNUOJ_C语言1112:进制转换(函数专题)(完整代码)
- ZZNUOJ_用C语言编写程序实现1176:查找最大字符串(指针专题)(附完整源码)
- C语言中的指针笔记
- python实现类似C语言结构的数据(亲测可用)
- C语言之制作ota文件包(作为参考)
- C语言查找众数
- C语言快速解决反转链表
- 《OOC》笔记(3)——C语言变长参数va_list的用法
- C语言之可变参数(六十四)
- C语言之二级指针存放一级指针地址(五十)
- 【C语言】字符串替换空格:实现一个函数,把字符串里的空格替换成“%20”
- C语言---整型字符串转换
- C语言常见问题之数组越界与溢出