printf()函数介绍
目录
printf()函数介绍
一:头文件
二:格式控制字符串
1.格式字符。
2.转义字符。
3.普通字符。
三:格式字符输出示例
1. %c-----------输出字符
2. %s-----------输出字符串
【注意】上述是 C语言的写法,当你在C++中用 printf()时,下面的写法肯定是错误的,因为 printf()函数不支持 std::string 类型,它期望的是 C 风格的字符串。
四:还可以指定输出数据的指定数据宽度和小数位数,即 %m.nf。
五:printf()函数中的格式修饰符
六:printf()函数的返回值
【说明】这是 C语言中的输出函数,当然在 C++ 中也可以使用,只是有的需要改变一下形式,下面会提及,C++中一般使用 cout。(这里篇幅比较长,可以收藏一下哦,如果对你有一些帮助的话,就点个赞吧 _^_ 。)
一:头文件
printf()函数的头文件是 <stdio.h>。
二:格式控制字符串
格式控制字符串就是用双引号括起来的字符串,包括三类:
1.格式字符。
格式字符是由 "%" 引导,它是用来控制输出字符的格式。有这个字符串时,必须要保持输出值参数表中的数量和类型格式与格式字符一致,否则输出的值可能不是我们想要的。
格式字符说明 | |
%c | 字符型 |
%d | 十进制数 |
%i | 读入十进制、八进制、十六进制数,输入的时候正常是十进制,若输入0前缀的数将读入八进制,0X前缀读入16进制 |
%f | float型浮点数 |
%o | 八进制 |
%s | 字符串,碰到空格或回车结束 |
%x | 16进制 |
%p | 指针 |
%n | 至此已读入值的等价字符数 |
%lf | double型浮点数 |
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 ”。