printf函数
printf():输出参数文本到电脑屏幕上。f代表format(格式化),表示可以定制输出文本格式。
printf()结尾不会自己附带换行操作,如果自己需要换行可以在结尾添换行符\n加,如果参数文本内部需要换行也可以在需要换行的地方添加\n.
#include <stdio.h>//使用printf()需要添加该头文件 int main() { printf("hello world"); printf("hello world\n");//打印结果会在hello world 的基础下一行出现一个空行,光标显示在空行开头。 printf("hello\n world");//hello world 会在不同行打印出来 return 0; }
占位符:该位置可以由其它数值代入
#include <stdio.h> int main() { printf("%d",3);//此时%d就是占位符 该位置会由3代替故 打印结果为3 return 0; }
占位符第一个字符一律为% 第二个为占位符类型。使用%的,那么待入值就必须为整数。
printf()参数与占位符是一一对应的关系,如果有n个占位符,那么就会有n+1个参数。如果参数个数小于占位符个数,那么缺少的占位符就会打印随机值。
限定宽度:打印值最少得个数。
1.数值个数小于限定宽度,左边加空格,因为输出值是默认右对齐,如果想要左对齐,那么在限定宽度前加入-号即可。
#include <stdio.h> int main() { printf("%5d",2334525);//那么该数字打印出来就是2334525,因为它个数大于5那么就全部打印 printf("%5d",314);l//如果该值个数小于5就在左边加空格,所以打印结果为 314 return 0; }
限定小数位数:所有数字的最小宽度(包括.)
如果需要限制小数位则是使用%.浮点数类型这种方法。
#include <stdio.h> int main() { printf("%12f",3.14)//浮点数小数点后有6位 要求最小宽度为12 则需要在3前面加入4个空格,故输出值为 3.140000 printf("%.5f",3.14);//那么小数点后位数只能为5位,那么输出值为3.14000 return 0; }
输出部分字符串
如果不想全部输出字符串内容,则可以使用%.ms的方法输出部分字符串。m表示个数
#include <stdio,h> int main() { printf("%.5s","hello world");//则此时输出值为hello return 0; }
scanf函数
scanf():用于读取⽤⼾的键盘输⼊。scanf()语法与printf()函数相似,需要引头文件#include <stdio.h>。参数与占位符是一一对应的关系。
注:使用scanf()函数时,必须在变量前加上&(指针变量除外),因为scanf()传递的是不是值,而是地址。
scanf()函数处理数值占位符时,会自动过滤空白字符,包括空格制表符、换行符等。那么就说明,当你在输入的数据中间加入一个或多个空格,不会影响scanf()读取数据,换行如上。
scanf的返回值
scanf()返回值是一个整数,整数表示成功读取数据变量个数。如果未读取到任何项或失败则会返回EOF。
如果想要scanf()停止读取数据的话可以输入Z停止,VS是需要按3次Z停止。
占位符
scanf()函数占位符基本上与printf()函数相似,值得注意的是,%c不会忽略起首的空格。如果想要强制跳过字符的话,需要写为scanf(" %c",&ch)。%s不会读取空格,所以无法读取多个单词,除非多个%s一起使用。(后面会学到gets()可以解决包含空格问题)
scanf()函数将字符串读入数组,不会检测长度,所以储存的时候要注意不要超过数组个数,不然可能造成越界,产生未知影响。可以指定读取字符串个数(使用%ms)
赋值忽略符
当你需要输入固定格式时,如果你输入错误的话就可能导致获取数据失败,这时就可以用到赋值忽略符*,就不会造成如果你不小心输入错误导致无法读取的情况。
#include <stdio.h> int main() { int year=0; int month=0; int day=0; scanf("%d-%d-%d",&year,&month,&day); 使用赋值忽略符 int year=0; int month=0; int day=0; scanf("%d%*c%d%*c%d",&year,&month,&day); return 0; }