scanf读取的是标准输入;
printf是标准输出;
目录
scanf函数
printf函数
scanf函数
scanf()
()里面填的参数:int scanf(const char *_restrict_,……)表示有返回值,返回值是读取数据成功的个数,const char *_restrict_是一个参数。
用法:scanf(" %c%d%f",a,b,c);
最好每次在%c前面都加一个空格
其它都不会识别n,空格等字符,但是%会识别,如果输入时,手动输入空格或者n,会被识别,因为输入时不可以有,那么在scanf函数里含有一个空格,会事%c的数据和其他数据分开
原理:行缓冲:
终端输入10,但是还没有按下回车键时,10就被存储在标准输入缓冲区。此时按下回车后,标准输入缓冲区内存储的是“10n"。此时才会真正的执行输入输出操作,scanf函数才会开始匹配。
在scanf("%d",&a);中,10 匹配到%d,寻找到变量a的地址(即取地址&),然后把10放入变量a。scanf匹配10的时候,10就被从缓冲区取出,而"n"则留在缓冲区(%d的情况下,"n"会被忽略掉)。但是如果是scanf("%c",&a);,"n"也会被读取。
若缓冲区为空,则scanf函数会被卡住,被阻塞,不能继续往下执行.若scanf要读取多个输入,第一个输入读取完成后,未能及时输入,即缓冲区为空,scanf函数也会检测出来,然后被阻塞。
当然,10不一定是放在标准输入缓冲区,但会放在一个缓冲区里就是了。缓冲区的典型代表就是标准输入缓冲区和标准输出缓冲区。
printf函数
printf("name=%s,age=%d,sex=%c,score=%fn","xiaoming",19,'m',93.5);
//输出:name=xiaoming,age=19,sex=m,score=93.500000
//这里浮点数的输出没有处理,最好处理一下
也就是说,后面写常量还是变量都可以,但是要前后匹配
↓↓↓复制粘贴的其他博主的:
printf()函数详解_望天际的博客-CSDN博客_printf函数感谢博主的分享:https://me.csdn.net/blog/K346K3461.printf()简介printf()是C语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。printf()申明于头文件stdio.h。函数原型:int printf ( const char * format, ... );1返回值:正确返...https://blog.csdn.net/qq_25544855/article/details/81146800?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165502124916781432923299%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165502124916781432923299&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-81146800-null-null.142%5Ev13%5Epc_search_result_control_group,157%5Ev14%5Econtrol&utm_term=printf%E5%87%BD%E6%95%B0&spm=1018.2226.3001.4187
printf("%d,%5dn",20,a); //将1000(默认右对齐)左边补空格
printf("%d,%-5dn",20,a); //将1000左对齐,右边补空
printf("%05dn",a); //前面补0
printf("%+d,%+dn",a,-1000); //输出正负号
printf("% d % dn",a,-a); //正号用空格替代,负号输出;
//由此可见“”里不一定非得是,只是是,时会输出,;如果是其它的符合也会输出
printf("%.0f %#.0fn",e,e); //#的作用:当小数点后不输出值时依然输出小数点
printf("%.4fn",e); //小数点后输出4位
输出结果:
20, 1000
20,1000
01000
+1000,-1000
1000 -1000
2 2.
2.3000
printf("%.8dn",1000); //不足指定宽度补前导0,效果等同于%06d
printf("%.8fn",1000.123456789);//超过精度,截断
printf("%.8fn",1000.123456); //不足精度,补后置0
printf("%.8gn",1000.123456); //最大有效数字为8位
printf("%.8sn",“abcdefghij”); //超过指定长度截断
输出结果:
00001000
1000.12345679
1000.12345600
1000.1235
abcdefgh
仅需了解:getchar、putchar



