系列文章目录
printf 详解 - 你所不知道的printf用法
scanf 详解 - 你所不知道的scanf用法
持续更新中…
一.printf的概念
定义: printf 是 (print format) 的缩写是指格式化输出函数,主要功能是向标准输出设备按规定格式输出信息
调用格式: printf("<格式化字符串>",<参量表>);
二.printf的使用
1.输出字符串
①直接输出字符串
输出格式 : printf("hello world!");
printf输出字符串的方式有很多,在我们最开始学习C语言时,我们会输出"hello world!"
,这样的方式属于直接输出字符串。它是根据'h'
的地址向后一个一个进行打印,直到遇到'\0'
才会停止,而"hello world!'\0'"
其实是有'\0'
的,只是被隐藏了,在这里我就不细讲了,后面我会出一期字符串的相关知识进行解释。当然我们也不需要这么复杂的去这样记,这里是为第二种输出方式做铺垫的。
②直接输出字符串变量
输出格式 : printf(str);
在这样输出之前我们要先做一件事情 char str[] = "hello world";
我们需要先创建一个存储字符串的数组。这样创建的字符串"hello world!'\0'"
也是有'\0'
在里面的,只是被隐藏了。在这里str所指向的是首字符h的地址,它也是通过str所指向的h的地址向后进行打印,直到遇到'\0'
停止,这样的方法更为简单快捷,但我依然推荐后面要讲到的标准的输出格式。
③标准输出字符串
输出格式 : printf("%s", str);
这样的输出方式依然是要 char str[] = "hello world";
先创建一个存储字符串的数组,然后通过这样的格式输出。这样输出能让读者这更清楚的读懂你这一步是要做什么事情,也有利于后期自己的阅读。
2.输出数字
①常规输出
在这里我们只需要先创建一个整形变量int num1 = 10;
和一个浮点型变量double num2;
输出格式 | 释义 |
---|---|
printf("%d", num1); |
%d 是以十进制的方式进行输出。 |
printf("%o", num1); |
%o 是以八进制的方式进行输出。 |
printf("%x", num1); |
%x 是以十六进制的方式进行输出。 |
printf("%u", num1); |
%u 是将符号位默认为数值方式进行输出。 |
printf("%f", num2); |
%f 是以浮点数的方式进行输出。 |
②十进制输出技巧
在这里我们只需要先创建两个整形变量int num = 10;
和int count = 5;
输出格式 | 释义 |
---|---|
printf("%2d", num); |
%2d 它所表示占2个输出位置,数字靠右对齐,位数不足2个则在左边补空格 |
printf("%-2d", num); |
%-2d 它所表示占2个输出位置,数字靠左对齐,位数不足2个则在右边补空格 |
printf("%*d", count, num); |
%*d 表示占count = 5 个输出位置,数字靠右对齐,位数不足5个则在左边补空格 |
printf("%-*d", count, num); |
%-*d 表示占count = 5 个输出位置,数字靠左对齐,位数不足5个则在右边补空格 |
printf("%.4d\n", num); |
%.4d 表示占4个输出位置,如果输出的内容不足4位则只在左边用零填充 |
printf("%04d\n", num); |
%04d 表示占4个输出位置,如果输出的内容不足4位则只在左边用零填充 |
③八进制和十六进制输出技巧
在这里我们只需要先创建一个整形变量int num = 10;
输出格式 | 释义 |
---|---|
printf("%#o\n", num); |
输出八进制前面的0 |
printf("%#x\n", num); |
输出十六进制前面的0x |
三.常用转义字符
转义字符 | 释义 |
---|---|
\’ | 用于表示字符常量’ |
" | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\b | 退格符 |
\f | 进纸符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3个八进制的数字 |
\xdd | dd表示2个十六进制数字 |
五.深水炸弹
问题:下面这段代码的输出结果为多少
printf("%d", printf("%d", printf("%d", 43)));
解答:
printf
的返回值:printf
函数的返回值是打印的所有字符的总数(包括转义字符)。
这道题令我印象极其深刻,我认为有必要拿出来专门讲一下。首先我们要思考printf("%d", 43)
的结果为多少?至少我第一次遇到的时候毫无头绪,但我们要知道 printf()
是一个函数,所以我们这里我们可以创建一个变量来接收这个值。
int a = 12;
a = printf("%d", 43);
printf("\na = %d\n", a);
这里我创建了一个变量a来接收printf("%d\n", 43);
的返回值,输出结果 a = 2
得到这个输出结果的时候我就有了一点才想,这么无厘头的值该不会是有几个数吧!当然现在我还不能确定,我于是又进行了几次尝试。
//测试:当111的输出结果
int a = 12;
a = printf("%d", 111);
printf("\n%d\n", a);
在几次尝试过后我确定了 printf()
的返回值确实是 “数字的个数” 。最后我通过分析这道题的输出结果为4321
补充:
int a = printf("num=%d\n",43);
printf("%d",a); // 结果为7
原因:里面有7个字符(包括转义字符,%d被43所代替,视为两个字符)。文章来源:https://www.toymoban.com/news/detail-745278.html
六.小结
正是因为这样一道题,我认为我有必要对于每个函数的特性进一步的学习和研究,所以也从这篇博客开始,我将持续更新C语言标准库函数的函数详解,如果我的内容中出现错误也很乐意接受批评指点,希望每个看到我博客的人都能从中有所收获,而非无功而返,当然我会回再接再厉继续更新更为优质的博客与大家一起分享一起进步。文章来源地址https://www.toymoban.com/news/detail-745278.html
到了这里,关于printf 详解 - 你所不知道的printf用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!