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

 更新时间:2024年09月16日 10:22:24   作者:.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()函数用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Python执行dos命令并获取输出的结果

    基于Python执行dos命令并获取输出的结果

    这篇文章主要介绍了基于Python执行dos命令并获取输出的结果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python基于高斯消元法计算线性方程组示例

    Python基于高斯消元法计算线性方程组示例

    这篇文章主要介绍了Python基于高斯消元法计算线性方程组,结合实例形式分析了Python高斯消元法针对方程组求解的相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • pandas中.loc和.iloc以及.at和.iat的区别说明

    pandas中.loc和.iloc以及.at和.iat的区别说明

    这篇文章主要介绍了pandas中.loc和.iloc以及.at和.iat的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • python如何从键盘获取输入实例

    python如何从键盘获取输入实例

    在本篇内容中小编给各位整理的是关于python怎么从键盘获取输入的实例内容,需要的朋友们可以参考下。
    2020-06-06
  • django drf框架自带的路由及最简化的视图

    django drf框架自带的路由及最简化的视图

    这篇文章主要介绍了django-drf框架自带的路由以及最简化的视图,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Python中SQLite数据库的使用

    Python中SQLite数据库的使用

    SQLite是一种轻型关系型数据库,常用于嵌入式设备和移动应用中。Python中内置了SQLite模块,可用于连接和操作SQLite数据库。通过Python SQLite模块,可以方便地创建、查询和修改数据库中的数据,支持事务处理和数据库操作的原子性保证
    2023-04-04
  • pybaobabdt库基于python的决策树随机森林可视化工具使用

    pybaobabdt库基于python的决策树随机森林可视化工具使用

    这篇文章主要为大家介绍了pybaobabdt库基于python的决策树随机森林可视化工具使用探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-02-02
  • 使用Python脚本实现批量网站存活检测遇到问题及解决方法

    使用Python脚本实现批量网站存活检测遇到问题及解决方法

    本文是小编自己编写的一个使用python实现批量网站存活检测。在项目测试中非常有用。本文给大家分享了遇到的问题及解决方案,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-10-10
  • Python进阶学习之特殊方法实例详析

    Python进阶学习之特殊方法实例详析

    一般说来,特殊的方法都被用来模仿某个行为。下面这篇文章主要给大家介绍了关于Python进阶学习之特殊方法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起看看吧。
    2017-12-12
  • pytorch实现查看当前学习率

    pytorch实现查看当前学习率

    这篇文章主要介绍了pytorch实现查看当前学习率,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06

最新评论