快捷搜索:  汽车  科技

c语言printf与scanf函数(C语言printf函数详解和示例)

c语言printf与scanf函数(C语言printf函数详解和示例)%c 输出字符。%hu、%u、%lu 以十进制、无符号的形式输出 short、int、long 类型的整数其中,格式说明符的形式如下(方括号 [] 中的项为可选项): %[flags][width][.prec] type1、类型符(type)它用以表示输出数据的类型,以下是常用类型的汇总,不常用的就不介绍了。%hd、%d、%ld 以十进制、有符号的形式输出 short、int、long 类型的整数。

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

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

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

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

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

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

%[flags][width][.prec] type1、类型符(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("=s=\n" "abc"); // 输出= abc= printf("=d=\n" 123); // 输出= 123= printf("=lf=\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("=2s=\n" "abc"); // 输出= abc= printf("=2d=\n" 123); // 输出=000000000123= printf("=2f=\n" 123.5); // 输出=00123.500000=

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

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

4、精度(prec)

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

printf("=.2lf=\n" 123.5); // 输出= 123.50= printf("=%.2lf=\n" 123.5); // 输出=123.50= printf("=.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); }

运行结果

c语言printf与scanf函数(C语言printf函数详解和示例)(1)

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

6、版权声明

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

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

作者:码农有道

猜您喜欢: