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() 解析数据就会失败。
相关文章
|
10天前
|
C语言
C语言:内存函数(memcpy memmove memset memcmp使用)
C语言:内存函数(memcpy memmove memset memcmp使用)
|
4天前
|
缓存 安全 编译器
【C 言专栏】C 语言函数的高效编程技巧
【5月更文挑战第1天】本文探讨了C语言中函数的高效编程技巧,包括函数的定义与作用(如代码复用和提高可读性)、设计原则(单一职责和接口简洁)、参数传递方式(值传递、指针传递和引用传递)、返回值管理、调用约定、嵌套与递归调用,以及函数优化技巧和常见错误避免。掌握这些技巧能提升C语言代码的质量和效率。
【C 言专栏】C 语言函数的高效编程技巧
|
6天前
|
C语言
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
|
6天前
|
C语言
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
|
6天前
|
C语言
(浙大版《C语言程序设计(第3版)》 习题6-5 使用函数验证哥德巴赫猜想 (20分)
(浙大版《C语言程序设计(第3版)》 习题6-5 使用函数验证哥德巴赫猜想 (20分)
|
9天前
|
安全 C语言
【C语言】strcpy与strncpy函数的使用和模拟实现
【C语言】strcpy与strncpy函数的使用和模拟实现
5 0
|
9天前
|
C语言
【C语言】字符分类函数与字符转换函数
【C语言】字符分类函数与字符转换函数
9 1
|
9天前
|
存储 缓存 编译器
C语言之scanf浅析
C语言之scanf浅析
19 0
|
9天前
|
存储 C语言
C语言之printf浅析
C语言之printf浅析
15 0
|
9天前
|
程序员 编译器 C语言
C语言之函数与参数
C语言之函数与参数
7 0