C语言格式化输出函数printf详解——C语言基础知识

这篇具有很好参考价值的文章主要介绍了C语言格式化输出函数printf详解——C语言基础知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、printf函数的一般格式

(由于篇幅较长,内容较全,建议收藏)

printf函数的一般格式为:
printf(格式控制字符串,输出值参数表);
如:

printf("f=%f,c=%f\n",f,c);

其中,f=%f,c=%f\n格式控制字符串f,c输出值参数表

(1)格式控制字符串是用双引号括起来的字符串,包括三类信息:
  1. 格式字符。格式字符由“%”引导,如%d、%f等。它的作用是控制输出字符的格式。
  2. 转义字符。格式控制字符串里的转义字符按照转义后的含义输出,如上面printf函数双引号内的换行符“\n”,即输出回车。
  3. 普通字符。普通字符即需要在输出时原样输出的字符,如上面printf函数中双引号内的“f=”和“c= ”部分。
(2)输出值参数表是需要输出的数据项的列表,输出数据项可以是常量、变量或表达式,输出值参数之间用逗号分隔,其类型应与格式字符相匹配。每个格式字符和输出值参数表中的输出值参数一一对应,没有输出参数时,格式控制字符串中不再需要格式字符。

2、格式字符

(1)d格式字符

输出带符号的十进制整数,正数的符号不输出。
如:

int a = 256,b = -125;
printf("%d\n%d",a,b);

输出结果为:
C语言格式化输出函数printf详解——C语言基础知识
还可以在%和格式字符中间插入格式修饰符,用于指定输出数据的域宽(所占的列数),如用“%5d”,指定输出数据占5列,输出的数据在域内向右靠齐。如:

int a = 256,b = -125;
printf("%5d\n%5d",a,b);

输出结果为:
C语言格式化输出函数printf详解——C语言基础知识
其中256前面有2个空格,-125前面有一个空格。
若要输出long(长整型)数据,则在格式字符d前面加字母l(代表long),即“%ld”。

(2)f格式符

输出一个实数(包括单精度、双精度、长双精度),以小数形式输出,有以下几种用法:

1)基本型,%f

不指定输出数据的长度,由系统根据数据的实际情况决定数据所占的列数。系统处理的方法一般是:实数中的整数部分全部输出,小数部分输出6位。
如:

#include<stdio.h>
int main(){
	double a = 1.0;
	printf("%f\n",a/3);
	return 0;
} 

运行结果:
C语言格式化输出函数printf详解——C语言基础知识
虽然a是double型,a/3的结果也是double型,但用 %f格式字符只能输出6位小数

2)指定数据宽度和小数位数用%m.nf 。

其中,m表示输出数据的宽度,即占m列,n表示小数点后保留n位小数。(若不需强调输出数据宽度,可直接用%.nf)
如:

#include<stdio.h>
int main(){
	double a = 1.0;
	printf("%20.15f\n",a/3);
	return 0;
} 

运行结果为:
C语言格式化输出函数printf详解——C语言基础知识
其中,在0前面有3个空格,小数点后输出了15位小数。
注意:一个double型数只能保证15位有效数字的精确度,即使指定小数位数为50(如用%.50f),也不能保证输出的50位都是有效数值。

3)输出的数据向左对齐,用%-m.nf。

即在m.n前面加一个负号,能够让输出数据在域内向左靠齐。
如:

#include<stdio.h>
int main(){
	double a = 1.0;
	printf("%-20.15f\n",a/3);
	return 0;
} 

运行结果:
C语言格式化输出函数printf详解——C语言基础知识

(3)c格式字符

用于输出一个字符,如:

#include<stdio.h>
int main(){
	char ch = 'a';
	printf("%c",ch);
	return 0;
} 

输出结果:
C语言格式化输出函数printf详解——C语言基础知识
也可以加格式修饰符指定域宽,如:

#include<stdio.h>
int main(){
	char ch = 'a';
	printf("%5c",ch);
	return 0;
} 

输出结果:
C语言格式化输出函数printf详解——C语言基础知识

(4)s格式符

用于输出一个字符串,如:

printf("%s","Hello!");

输出结果:
C语言格式化输出函数printf详解——C语言基础知识

3、使用printf函数时应注意的问题

(1)格式控制字符串中没有%引导的格式字符时,不需要输出值参数表,直接输出字符串内容,转义字符按照转义后的实际意义输出,如:
#include<stdio.h>
int main(){
	printf("Hello world!");
	printf("\n");
	printf("Hello,\nworld!");
	return 0;
	}

输出结果:
C语言格式化输出函数printf详解——C语言基础知识

(2)格式控制字符串中有%引导的格式字符时,输出值参数表中的数量以及类型必须和格式字符一致,如:
#include<stdio.h>
int main(){
	int a = 123;
	double b = 35.8,c = 1.0;
	printf("a = %d,b = %d\n",a,b);
	printf("a = %d,c = %f\n",a);
	return 0;
	}

运行结果:
C语言格式化输出函数printf详解——C语言基础知识
分析:第一个printf函数中的输出参数b是double型,但对应的格式控制符为%d,当类型不一致时并不会进行类型转换,而会将实际转入的double型值当作需要的整形类型来理解,因此出现非预期结果;第二个printf函数中,格式控制字符串给出了两个%引导的格式字符,但是输出参数表中只有一个参数a。因此输出c的值默认为内存中a变量后面存储单元的数据值,即c的值我们不能确定。

附表1:
printf函数中用到的格式字符

格式字符 说明
d 输出带符号的十进制整数,正数的符号省略
u 以无符号的十进制整数形式输出
o 以无符号的八进制整数形式输出,不输出前导符0
x 以无符号十六进制整数形式(小写)输出,不输出前导符0x
X 以无符号十六进制整数形式(大写)输出,不输出前导符0X
f 以小数形式输出单、双精度数,隐含输出6位小数
e 以指数形式(小写e表示指数部分)输出实数
E 以指数形式(大写E表示指数部分)输出实数
g 自动选取f或e中输出宽度较小的一种使用,且不输出无意义的0
c 输出一个字符
s 输出字符串

附表2:
printf函数中用到的格式修饰符文章来源地址https://www.toymoban.com/news/detail-400179.html

格式修饰符 说明
英文字母l 修饰格式字符d、u、o、x时,用于输出long型数据
英文字母L 修饰格式字符f、e、g时,用于输出long double型数据
英文字母h 修饰格式字符d、o、x时,用于输出short型数据
输出域宽m(m为整数) 指定输出项输出时所占的列数
显示精度.n(n为整数) 对于实数,表示输出n位小数;对于字符串,表示截取的字符个数
-(减号) 输出数字或字符在域内向左靠

到了这里,关于C语言格式化输出函数printf详解——C语言基础知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言printf格式化打印(%d、%md、%f、%c、%s、%o、%x、%p、%e、%E、%n等)

    我们要记住 signed ➕ 类型 完全等效与 单独的类型 所以我们下面会用 (signed) 来表示可以省略不写。 如果格式化输出的并不是类型匹配的格式,会发生隐式类型转换, (signed) int   (有符号整型)——— %d    unsigned int     (无符号的int类型)——— %u     size_t    (无符号的

    2024年02月04日
    浏览(50)
  • python %s格式化输出的五种用法,实例详解

    %s是python中的一个用于格式化输出的符号,与python内置的print()函数搭配使用,通常情况下用于格式化输出字符串或字符,但实际上,%s也可以用于输出其他的python数据类型。除此之外,%和s之间还可以传递一些参数,比如数值或符号等等,具体的见下方的实例代码。 基本用法

    2024年02月06日
    浏览(48)
  • C语言中的格式化输出符号:%d %c %p %x等

    C语言中的格式化输出符号有很多,以下是一些常见的: %d 或 %i:用于输出十进制整数。 %u:用于输出无符号十进制整数。 %f:用于输出浮点数。 %s:用于输出字符串。 %c:用于输出字符。 %p:用于输出指针。 %x 或 %X:用于输出十六进制数,%x表示输出小写字母,%X表示输出大

    2024年01月18日
    浏览(41)
  • Go 中的格式化字符串`fmt.Sprintf()` 和 `fmt.Printf()`

    在 Go 中,可以使用 fmt.Sprintf() 和 fmt.Printf() 函数来格式化字符串,这两个函数类似于 C 语言中的 scanf 和 printf 函数。 fmt.Sprintf() 函数返回一个格式化后的字符串,而不是将其打印到标准输出流中。下面是一个例子: 输出: 在这个例子中,使用了 %s 和 %d 格式化动词来格式化字

    2024年02月09日
    浏览(45)
  • C语言--输出格式控制(printf函数)--宽度精度控制

    格式输出函数printf printf(格式控制,输出表列) 格式字符 功能 例子 d 输出一个有符号的十进制整数 printf(\\\"%d  %d\\\",12,-56); c 输出一个字符     char ch =\\\'a\\\';     printf(\\\"%c\\\",ch); s 输出一个字符串 printf(\\\"%s\\\",\\\"oh my god\\\"); f 输出实数(包括单、双精度、长双精度), 以小数形式输出,默认输

    2024年02月06日
    浏览(43)
  • python格式化输出

    偶然看到一种格式化输出这么写的 可以看到 %(key)s 包围的值可以通过字典对应的值指定 另外的格式化输出还有 \\\"\\\".format() , \\\"\\\" % , f\\\"{}\\\"

    2024年02月05日
    浏览(38)
  • Python基础—格式化输出

    一、旧式字符串格式化方法 %s、%d、%f等被称为占位符,%s对应字符串、%d对应整型、%f对应浮点型 %f -- 默认保留6位小数 %.Nf -- N为整数 %f -- 四舍五入 二、format方法 在字符串中写{},字符串外调用format方法,在format方法中传入值,按照一一对应的关系被写入对应的{} 作用为说明

    2024年02月08日
    浏览(47)
  • C++常用格式化输出转换

     在C语言中可以用printf以一定的格式打印字符,C++当然也可以。 输入输出及命名空间还不太了解的小伙伴可以看一看C++入门讲解第一篇。  在C++中,可以用流操作符(stream manipulators)控制数据的输出格式,这些流操作符定义在2个头文件( iomanip 和 ios )中,可以用输出运算

    2024年02月04日
    浏览(44)
  • fmt的格式化输入输出

    fmt 包是 Go 语言标准库中用于格式化输入和输出的包,它提供了丰富的函数来控制输出的格式,处理不同类型的数据,并且可以从输入源(如标准输入、文件)读取数据。下面将详细介绍 fmt 包的格式化输出和输入处理。 格式化输出 : fmt 包通过格式字符串来控制输出的格式

    2024年02月13日
    浏览(41)
  • python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印

    (格式化替换,替换,列表字典替换,类格式化, 魔法函数格式化,对齐及填充格式化,format对齐打印) 本篇目录内容: 📘  一、format() 函数的语法 📘  二、format() 函数基本用法 📘  三、用对齐及填充的方式格式化 📘  四、用format函数实现对齐打印 📘  五、其他内容待

    2024年02月07日
    浏览(84)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包