printf用法大全,C语言printf格式控制符一览表
发布时间:2020-12-15 17:34:56 所属栏目:百科 来源:网络整理
导读:输入输出函数(printf 和 scanf)是C语言中非常重要的两个函数,也是学习C语言必学的两个函数。在C语言程序中,几乎没有一个程序不需要这两个函数,尤其是输出函数(printf),所以这两个函数必须要掌握。 如果在程序中要使用 printf 或者 scanf,那么就必须
输入输出函数(printf 和 scanf)是C语言中非常重要的两个函数,也是学习C语言必学的两个函数。在C语言程序中,几乎没有一个程序不需要这两个函数,尤其是输出函数(printf),所以这两个函数必须要掌握。 如果在程序中要使用 printf 或者 scanf,那么就必须要包含头文件 stdio.h。因为这两个函数就是包含在该头文件中的。 输出函数的功能是将程序运行的结果输出到屏幕上,而输入函数的功能是通过键盘给程序中的变量赋值。可以说输入输出函数是用户和计算机交互的接口。其中 printf 的功能很强大,用法很灵活,比较难掌握;而 scanf 的用法相对比较固定,但也有很多需要注意的地方。 本节我们先讲解 printf 的用法,稍后再讲解 scanf。 printf 的格式printf 函数的原型为:
# include <stdio.h> printf 的格式有四种: 1) printf("字符串n");# include <stdio.h> int main(void) { printf("Hello World!n"); // n表示换行 return 0; }其中 n 表示换行的意思。它是一个转义字符,前面在讲字符常量的时候见过。其中 n 是“new line”的缩写,即“新的一行”。此外需要注意的是,printf 中的双引号和后面的分号必须是在英文输入法下。双引号内的字符串可以是英文,也可以是中文。 2) printf("输出控制符",输出参数);# include <stdio.h> int main(void) { int i = 10; printf("%dn",i); /*%d是输出控制符,d 表示十进制,后面的 i 是输出参数*/ return 0; }这句话的意思是将变量 i 以十进制输出。 那么现在有一个问题:i 本身就是十进制,为什么还要将 i 以十进制输出呢? 因为程序中虽然写的是 i=10,但是在内存中并不是将 10 这个十进制数存放进去,而是将 10 的二进制代码存放进去了。计算机只能执行二进制 0、1 代码,而 0、1 代码本身并没有什么实际的含义,它可以表示任何类型的数据。所以输出的时候要强调是以哪种进制形式输出。所以就必须要有“输出控制符”,以告诉操作系统应该怎样解读二进制数据。 如果是 %x 就是以十六进制的形式输出,要是%o 就是以八进制的形式输出,大家自己试一下。
3) printf("输出控制符1 输出控制符2…",输出参数1,输出参数2,…);# include <stdio.h> int main(void) { int i = 10; int j = 3; printf("%d %dn",i,j); return 0; }输出控制符 1 对应的是输出参数 1,输出控制符 2 对应的是输出参数 2……编译、链接、执行后我们看一下输出结果: 10 3 注意一下,为什么 10 和 3 之间有一个空格?因为上面 %d 和 %d之间有空格,printf 中双引号内除了输出控制符和转义字符 n 外,所有其余的普通字符全部都原样输出。比如:
# include <stdio.h> int main(void) { int i = 10; int j = 3; printf("i = %d,j = %dn",j); return 0; }这时我们再编译、链接、执行一下: i = 10,j = 3 i= 、, 、空格和j= 全都原样输出了。此外需要注意的是:“输出控制符”和“输出参数”无论在“顺序上”还是在“个数上”一定要一一对应。4) printf("输出控制符 非输出控制符",输出参数);这实际上就是上面那个例子。这时候会有一个问题:到底什么是“输出控制符”,什么是“非输出控制符”?很简单,凡是以% 开头的基本上都是输出控制符。
输出控制符常用的输出控制符主要有以下几个:
%x、%X、%#x、%#X 的区别一定要掌握 %x(或 %X 或 %#x 或 %#X),因为调试的时候经常要将内存中的二进制代码全部输出,然后用十六进制显示出来。下面写一个程序看看它们四个有什么区别:# include <stdio.h> int main(void) { int i = 47; printf("%xn",i); printf("%Xn",i); printf("%#xn",i); printf("%#Xn",i); return 0; }在 VC++ 6.0 中的输出结果: 2f 2F 0x2f 0X2F 从输出结果可以看出:如果是小写的 x ,输出的字母就是小写的;如果是大写的X ,输出的字母就是大写的;如果加一个# ,就以标准的十六进制形式输出。最好是加一个 # ,否则如果输出的十六进制数正好没有字母的话会误认为是一个十进制数呢!总之,不加# 容易造成误解。但是如果输出 0x2f 或 0x2F,那么人家一看就知道是十六进制。而且%#x 和%#X 中,笔者觉得大写的比较好,因为大写是绝对标准的十六进制写法。
如何输出 %d、 和双引号printf 中有输出控制符%d ,转义字符前面有反斜杠 ,还有双引号。那么大家有没有想过这样一个问题:怎样将这三个符号通过 printf 输出到屏幕上呢?要输出 %d 只需在前面再加上一个% ,要输出 只需在前面再加上一个 ,要输出双引号也只需在前面加上一个 即可。程序如下:
# include <stdio.h> int main(void) { printf("%%dn"); printf("n"); printf("""n"); return 0; }在 VC++ 6.0 中的输出结果是: %d "" 小结printf 是C语言中非常重要的一个函数。经过上面的学习我们发现,其实它并不难。只要多编程多练习,很快就能掌握。其次学完本节之后要知道为什么需要“输出控制符”。因为计算机中所有的数据都是二进制 0、1 代码,所以输出的时候要用“输出控制符”告诉计算机以什么形式将二进制数据显示出来。 输出控制符中,%d、%f、%s、%c 是最常用的,它们分别是输出整数、实数、字符串和字符的控制符。%.mf?虽然用得不多,但一定要重视。 最后 %x、%X、%#x、%#X 四种用法的区别只需要了解一下即可。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |