python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > C语言中printf()函数用法

C语言中printf()函数的全面介绍及用法(简单易懂)

作者:.jc7

在C语言中,printf()是常用的输出函数,包含在头文件中,它使用格式控制字符串,其中包括格式字符、转义字符和普通字符,格式字符以"%"开头,文中将用法介绍的非常详细,需要的朋友可以参考下

【说明】这是 C语言中的输出函数,当然在 C++ 中也可以使用,只是有的需要改变一下形式,下面会提及,C++中一般使用 cout。(这里篇幅比较长,可以收藏一下哦)

一:头文件

printf()函数的头文件是 <stdio.h>。

二:格式控制字符串

格式控制字符串就是用双引号括起来的字符串,包括三类:

1.格式字符。

格式字符是由 "%" 引导,它是用来控制输出字符的格式。有这个字符串时,必须要保持输出值参数表中的数量和类型格式与格式字符一致,否则输出的值可能不是我们想要的。

格式字符说明
%c字符型
%d十进制数
%i读入十进制、八进制、十六进制数,输入的时候正常是十进制,若输入0前缀的数将读入八进制,0X前缀读入16进制
%ffloat型浮点数
%o八进制
%s字符串,碰到空格或回车结束
%x16进制
%p指针
%n至此已读入值的等价字符数
%lfdouble型浮点数

2.转义字符。

按照转义后的含义输出,比如 "\n" ,意思是输出后换行。

3.普通字符。

意思是需要在输出时原样输出的字符,比如下面代码中的 "a="。

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	int a=31;
	printf("a=%d",a);// a是int型整数,所以用 %d
}

【输出结果】

三:格式字符输出示例

1. %c-----------输出字符

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	char ch='d';
	printf("%c",ch);
} 

【输出结果】

2. %s-----------输出字符串

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	printf("%s","Hello World!");
} 

【输出结果】

【注意】上述是 C语言的写法,当你在C++中用 printf()时,下面的写法肯定是错误的,因为 printf()函数不支持 std::string 类型,它期望的是 C 风格的字符串。

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	string str="Hello World!";
	printf("%s",str);
}

那么要怎么改呢?std::string 类提供了一个成员函数 c_str(),该函数返回一个指向以 null 结尾的字符数组的指针(即 C 风格的字符串),这个数组包含了字符串的内容。这个指针可以被 printf()函数接受。

【代码如下】

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	string str="Hello World!";
	printf("%s",str.c_str());
}

【输出结果】

【说明】其实关于 std::string 中的 c_str()函数,也有很多类似用处,比如——atoi()函数,atoi()函数可以将字符串转化成 int 型整数,这在字符串相关问题中是比较常用的,还是掌握一下比较好,具体的可以点进我的主页中,里面的一篇文章详细介绍了这个函数以及其他字符串中常用的函数。当转换 std::string 类型的字符串时就要用 c_str()函数。

四:还可以指定输出数据的指定数据宽度和小数位数,即 %m.nf。

1.其中 m 表示输出数据的宽度,即占 m 列,n 表示小数点后保留 n 位小数,如题目中没有强调输出数据的宽度,直接 %.nf 即可。

【代码如下】

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	double a=3.7839127;
	printf("%8.4f\n",a);
} 

【运行结果】

可以从结果中看出,输出的数据保留了四位小数,而且数据前有两个空格,还有换行。(还有 double 型数只能保证15位有效小数,即使指定小数位数为20或其他超过15的,比如 %.20f,也不能保证输出的20位小数都是有效数值)

【说明】保留小数还可以用 setprecision(n),n 是要保留的小数位数,注意前面要加上 fixed。比如,cout<<fixed<<setprecision(5)<<num;意思是保留 num 的五位小数并输出。

2.在 m.nf 前面加上一个负号,可以让输出的数据在域内向左靠齐。以上面代码为例。

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	double a=3.7839127;
	printf("%-8.4f\n",a);
} 

【运行结果】

五:printf()函数中的格式修饰符

1.字母 l 修饰字符 f、e、g 时,用于输出 long double 型数据。

2.字母 i 修饰字符 d、u、o、x 时,用于输出 long 型数据。

3.字母 h 修饰字符d、o、x 时,用于输出 short 型数据。

4.还有上面提到的 输出域宽m、显示精度n、(m、n都是整数),以及减号 -(输出数字或字符 ,在域内向左靠)。

六:printf()函数的返回值

这个其实用的并不多,也可以了解一下。

printf()函数返回值 int型,也就是说在进行嵌套使用时,它的打印格式是 %d。它返回的内容就是打印字符的个数。下面会举两个例子来说明。

【样例一】

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	printf("%d",printf("%d",printf("%d",54)));
	return 0;
}

【输出结果】

先输出54,因为 printf("%d,54)打印出来的是两个字符,所以 printf("%d",printf("%d",54))输出的是2,同理,最终输出的是5421。

【样例二】

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	printf("%d ",printf("%d ",printf("%d ",54)));
	return 0;
}

【输出结果】

这个和上面的差不多,只是 %d 后面有了一个空格,所以导致输出了 “54 3 2 ”。

总结

到此这篇关于C语言中printf()函数的全面介绍及用法的文章就介绍到这了,更多相关C语言中printf()函数用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文