C语言printf函数详解

article/2025/9/12 5:38:09

文章目录

    • 1、类型符(type)
    • 2、宽度(width)
    • 3、对齐标志(flags)
    • 4、精度(prec)
    • 5、格式化输出到字符串
    • 6、版权声明

C语言格式化输出的函数有printf、sprintf和snprintf等,功能略有不同,使用方法大同小异,本文以printf函数为例来介绍它们的用法。

对于 printf函数,相信大家并不陌生。之所以称它为格式化输出函数,该函数的声名如下:

int printf(const char *format, ...);

大家看到printf函数的声明就会有点懵,它参数的写法与我们之前学到的函数知识不一样,printf函数是一个“可变参数函数”(即函数参数的个数是可变的),可变参数函数的知识以后再介绍,现在只要知道怎么使用就行了。

printf函数的参数的个数和类型都是可变的,每一个参数的输出格式都有对应的格式说明符与之对应,从格式串的左端第1 个格式说明符对应第 1 个输出参数,第 2 个格式说明符对应第 2 个输出参数,第 3个格式说明符对应第 3 个输出参数,以此类推。

其中,格式说明符的形式如下(方括号 [] 中的项为可选项):

   %[flags][width][.prec] type

1、类型符(type)

它用以表示输出数据的类型,以下是常用类型的汇总,不常用的就不介绍了。

%hd、%d、%ld 以十进制、有符号的形式输出 short、int、long 类型的整数。

%hu、%u、%lu 以十进制、无符号的形式输出 short、int、long 类型的整数

%c 输出字符。

%lf 以普通方式输出double(float弃用,long doube无用)。

%e 以科学计数法输出double。

%s 输出字符串。

2、宽度(width)

它用于控制输出内容的宽度。

   printf("=%12s=\n","abc");     // 输出=         abc=printf("=%12d=\n",123);       // 输出=         123=printf("=%12lf=\n",123.5);    // 输出=  123.500000=

3、对齐标志(flags)

flags它用于控制输出内容的对齐方式。

不填或+:输出的内容右对齐,这是缺省的方式,上一小节就是右对齐的示例。

-:输出的内容左对齐。

   printf("=%-12s=\n","abc");    // 输出=abc         =printf("=%-12d=\n",123);     // 输出=123         =printf("=%-12f=\n",123.5);    // 输出=123.500000  =

如果输出的内容是整数或浮点数,并且对齐的方式是右对齐,可以加0填充,例如:

   printf("=%012s=\n","abc");  // 输出=         abc=printf("=%012d=\n",123);   // 输出=000000000123=printf("=%012f=\n",123.5);  // 输出=00123.500000= 

从上面第一行代码的结果看出,输出的内容不是整数或浮点数,是字符串,不能在前面填0。

左对齐的时候,能在整数或浮点数的后面补0吗?浮点数最多可以补到6位,整数不行,为什么?您的存款能在后面补0吗?

4、精度(prec)

如果输出的内容是浮点数,它用于控制输出内容的精度,也就是说小数点后面保留多少位,后面的数四舍五入。

   printf("=%12.2lf=\n",123.5);   // 输出=      123.50=printf("=%.2lf=\n",123.5);     // 输出=123.50=printf("=%12.2e=\n",123500000000.0);  // 输出=    1.24e+11=printf("=%.2e=\n",123500000000.0);    // 输出=1.24e+11=

5、格式化输出到字符串

int printf(const char *format, ...);
int sprintf(char *str, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...);

printf是把结果输出到屏幕,sprintf把格式化输出的内容保存到字符串str中,snprintf的n类似于strncpy中的n,意思是只获取输出结果的前n-1个字符,不是n个字符。

C语言提供了把字符串转换为整数和浮点数据的库函数,但是没有把整数和浮点数据转换为字符串的库函数,而是采用sprintf和snprintf函数格式化输出到字符串。

示例(book98.c)

/** 程序名:book98.c,此程序演示格式化输出sprintf和snprintf函数。* 作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
#include <string.h>int main()
{char str[301];// 格式化输出到str中sprintf(str,"%d,%c,%f,%s",10,'A',25.97,"一共输入了三个数。");printf("%s\n",str);// 格式化输出到str中,只截取前7个字符snprintf(str,8,"%d,%c,%f,%s",10,'A',25.97,"一共输入了三个数。");printf("%s\n",str);
}

运行结果
在这里插入图片描述

程序运行第二行只输出了6个字符,注意,snprintf函数在unix和windows平台下的表现略有不同,在windows平台下,第二行会输出7个字符。

6、版权声明

C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。

来源:C语言技术网(www.freecplus.net)

作者:码农有道


http://chatgpt.dhexx.cn/article/NVIHjJZL.shtml

相关文章

printf函数讲解

printf函数讲解 #include <stdio.h>/*辗转相除法求最大公约数*/ int gcd(int m, int n); int factrial(int a); int main(void){int m, n, t;scanf_s("%d %d", &m, &n);if (m < n){t m;m n;n t;}//n gcd(m, n);//printf("%d", n);pr…

C语言中fscanf和fprintf函数的使用

目录 一、前言 二、对比 1、scanf和fscanf&#xff1a; 2、printf和fprintf&#xff1a; 三、结论&#xff1a; 四、代码实现 1、fprintf相关代码 2、fscanf代码实现 3、 用fscanf和fprintf实现scanf和printf功能&#xff1a; 一、前言 在了解fscanf和fprintf之前我…

printf()函数详解

感谢博主的分享&#xff1a;https://me.csdn.net/blog/K346K346 1.printf()简介 printf()是C语言标准库函数&#xff0c;用于将格式化后的字符串输出到标准输出。标准输出&#xff0c;即标准输出文件&#xff0c;对应终端的屏幕。printf()申明于头文件stdio.h。 函数原型&am…

有关于fprintf()函数的用法

fprintf&#xff08;简介&#xff09; fprintf是C/C中的一个格式化库函数&#xff0c;位于头文件中&#xff0c;其作用是格式化输出到一个流文件中&#xff1b;函数原型为int fprintf( FILE *stream, const char *format, [ argument ]…)&#xff0c;fprintf()函数根据指定的格…

雷达理论的模糊函数

在雷达理论中&#xff0c;模糊与分辨是两个既有联系又有区别的概念。对多个目标来说&#xff0c;模糊就是不能分辨。雷达的分辨力取决于模糊图中心主瓣的宽度。雷达模糊度不仅考虑主瓣宽度&#xff0c;还考虑模糊图旁瓣的影响。因此&#xff0c;在研究雷达分辨理论之前&#xf…

驱动板LVDS输出接口(发送器),液晶面板LVDS输入接口(接收器)

1&#xff0e;LVDS输出接口概述 液晶显示器驱动板输出的数字信号中&#xff0c;除了包括RGB数据信号外&#xff0c;还包括行同步、场同步、像素时钟等信号&#xff0c;其中像素时钟信号的最高频率可超过28MHz。采用TTL接口&#xff0c;数据传输速率不高&#xff0c;传输距离较短…

两种LVDS数传接口--车载视频传输

本文介绍两种LVDS数传接口&#xff1a;GMSL和FPD Link&#xff0c;这两种接口在汽车视频传输方面的应用是比较广泛的&#xff0c;尤其是Camera和处理器之间的链路&#xff0c;通过STP或者同轴电缆能使整个链路达到15m。 1、FPD Link Flat Panel Display Link(FPD Link)最早是…

LVDS接口分类与数据格式

转发路径&#xff1a;https://blog.csdn.net/a617996505/article/details/82386952 1.LVDS接口分类与数据格式 单路6it LVDS 这种接口电路中&#xff0c;采用单路方式传输&#xff0c;每个基色信号采用6位数据&#xff0c;共18位RGB数据&#xff0c;因此&#xff0c;也称18位…

Xilinx fpga实现LVDS高速ADC接口

LVDS 即Low-Voltage Differential Signaling。FPGA的selecteIO非常强大&#xff0c;支持各种IO接口标准&#xff0c;电压电流都可以配置。其接口速率可以达到几百M甚至上千M。使用lvds来接收高速ADC产生的数据会很方便。像ISERDES&#xff0c;IDDR&#xff0c;IDELAY&#xff0…

LVDS接口和接口电路概述

1、LVDS接口概述 LVDS&#xff0c;即Low Voltage Differential Signaling&#xff0c;是一种低压差分信号技术接口。克服以TTL电平方式传输宽带高码率数据时功耗大、EMI电磁干扰大等缺点而研制的一种数字视频信号传输方式。LVDS输出接口利用非常低的电压摆幅&#xff08;约350m…

常见视频高速接口分析MIPI,LVDS,RGB,HDMI

文章目录 一、RGB接口二、LVDS接口三、MIPI接口四、HDMI接口 一、RGB接口 &#xff08;1&#xff09;接口定义 RGB颜色是工业界的一种颜色标准&#xff0c;是通过对红、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的&#xff0c;RGB即是代表红…

接口mipi和lvds的区别

原文&#xff1a;http://m.elecfans.com/article/578395.html MIPI &#xff08;Mobile Industry Processor Interface&#xff09; 是2003年由ARM&#xff0c; Nokia&#xff0c; ST &#xff0c;TI等公司成立的一个联盟&#xff0c;目的是把手机内部的接口如摄像头、显示屏接…

液晶屏接口LVDS接口与MIPI DSI接口区别

LVDS与MIPI DSI区别_那个苏轼回不来了丶的博客-CSDN博客_“mipi dsi接口与LVDS与MIPI DSI区别_那个苏轼回不来了丶的博客-CSDN博客_“mipi dsi接口与lvds接口区别LVDS与MIPI DSI区别_那个苏轼回不来了丶的博客-CSDN博客_“mipi dsi接口与 1、LVDS接口只用于传输视频数据&#x…

液晶屏接口-LVDS

LVDS是英文Low Voltage Differential Signaling的缩写&#xff0c;它是一种低压差分信号技术接口。采用LVDS接口&#xff0c;可以使得信号在差分PCB线或平衡电缆上以几百Mbps的速率传输&#xff0c;推荐的最高数据传输速率是655Mbps&#xff0c;而理论上可以达到1.923Gbps。 【…

LVDS高速接口测试

话不多说&#xff0c;直接测试 1. OUTPUT&#xff1a;LVDS_TX 2. SDR&#xff1a;代表着速率&#xff0c;测试选的SDR&#xff08;单速率&#xff09; 3. 8&#xff1a;串换因子&#xff0c;就是一对LVDS转化几bit的并行数据&#xff08;和后面的clk&#xff0c;clk_div有关系…

MIPI、LVDS、RGB、HDMI等接口对比

液晶屏有RGB TTL、LVDS、MIPI、HDMI接口&#xff0c;这些接口区别于信号的类型&#xff08;种类&#xff09;&#xff0c;也区别于信号内容。 具体RGB TTL接口信号类型是TTL电平&#xff0c;信号的内容是RGB666或者RGB888还有行场同步和时钟&#xff1b; LVDS接口信号类型是LVD…

LVDS接口液晶屏定义(lcd)

转载于&#xff1a;https://blog.csdn.net/linphusen/article/details/6389032 LVDS接口液晶屏定义 LVDS接口又称RS-644总线接口 20PIN单6定义&#xff1a; 1&#xff1a;电源2&#xff1a;电源3&#xff1a;地 4&#xff1a;地 5&#xff1a;R0- 6&#xff1a;R0 7&…

基于FPGA的LVDS接口设计

实验内容&#xff1a; 通过LVDS接口&#xff0c;完成数据的收发测试。 上周居然开启了咸鱼模式&#xff0c;检讨一下 || 前集回顾&#xff1a; 《Xilinx - UG471中文翻译》&#xff08;1&#xff09;IDELAYE2原语介绍 《Xilinx - UG471中文翻译》&#xff08;2&#xff09;…

LVDS屏的俩种接口:JEIDAVESA

一、LVDS数据格式 LVDS信号格式有两种&#xff0c;一种JEIDA的标准&#xff0c;一种是VESA的标准; LCD屏老一点的有6bit的&#xff0c;现在普通的是8bit&#xff0c;新的就是10bit了; 每个clock周期内7bit数据&#xff08;跟TMDS标准有差别&#xff09;&#xff1a; 对应的…

LVDS接口是什么接口?

目前&#xff0c;有2种数字显示接口标准&#xff0c;一是由美国国家半导体公司&#xff08;National Semiconductor,NS&#xff09;推出的OpenLDI数字显示接口标准&#xff0c;另一个是由Silicon Image、Intel、Compaq、IBM、HP、NEC、Fujitsu等公司共同组成数字显示工作组&…