C语言第4弹-printf函数、scanf函数介绍

简介: C语言第4弹-printf函数、scanf函数介绍

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;
}
上⾯⽰例中,如果⽤⼾输⼊ 2020-01-01 ,就会正确解读出年、⽉、⽇。问题是⽤⼾可能输⼊其他格式,⽐如 2020/01/01 ,这种情况下, scanf() 解析数据就会失败。
相关文章
|
1月前
|
C语言
(C语言内存操作函数)memset函数详情
memset函数的头文件、返回值、参数
17 0
|
2天前
|
安全 编译器 程序员
C语言之字符函数&字符串函数篇(1)
C语言之字符函数&字符串函数篇(1)
16 0
|
2天前
|
算法 C语言
C语言之函数递归篇
C语言之函数递归篇
21 0
|
2天前
|
程序员 编译器 C语言
C语言之函数篇
C语言之函数篇
41 1
|
5天前
|
C语言 C++
C语言变量、地址、字符及printf()/sizeof()/scanf()函数介绍
C语言变量、地址、字符及printf()/sizeof()/scanf()函数介绍
4 0
|
5天前
|
C语言
C语言数组和函数
C语言数组和函数
7 0
|
5天前
|
C语言
C语言函数及分文件编程
C语言函数及分文件编程
8 0
|
7天前
|
存储 编译器 C语言
C语言:函数
C语言:函数
23 0
|
7天前
|
机器学习/深度学习 C语言
C语言:函数递归
C语言:函数递归
|
7天前
|
存储 编译器 程序员
C语言:函数
C语言:函数