printf的输出格式控制符、格式修饰符、转义字符

您所在的位置:网站首页 c语言格式控制符要换行吗 printf的输出格式控制符、格式修饰符、转义字符

printf的输出格式控制符、格式修饰符、转义字符

2024-07-13 01:04| 来源: 网络整理| 查看: 265

格式控制符: %d:用于输出十进制有符号整数。 %u:用于输出十进制无符号整数。 %f:用于输出十进制浮点数字。 %e 或 %E:用于输出指数形式的浮点数。 %g 或 %G:用于输出浮点数,根据数值大小自动选择使用 %f 或 %e。 %o :用于输出无符号八进制。 %x 或 %X:用于输出无符号十六进制。 %c:用于输出单个字符。 %s:用于输出字符串。 %p:用于输出指针地址。 %lu:用于输出无符号长整型。 %lld 或 %I64d:用于输出有符号长长整型。 %llu 或 %I64u:用于输出无符号长长整型。 %Lf:用于输出长双精度浮点数。

%% 格式控制符:用来输出百分号 %,在输出时需要使用两个百分号连在一起。

格式修饰符: -:左对齐。 +:输出符号(正数前面加上“+”)。 #:八进制前缀(0)、十六进制前缀(0x 或 0X)或浮点数小数点(.)。 0:用 0 在左侧填充数据输出的空白,而不是默认的空格字符。 m.n:m 是指定的最小宽度,n 是指定的精度。 *:用来接收动态传入的宽度和精度。例如,%*.*f 表示输出浮点数,宽度和精度由后面带两个 int 类型的参数动态传入。 转义字符: \a:警报(响铃)。 \b:退格(回退)一格。 \f:换页。 \n:换行。 \r:回车。 \t:水平制表符。 \v:垂直制表符。 \\:反斜杠。 \':单引号。 \":双引号。 \?:问号。 \0:字符串结束标志。 C语言输出函数printf格式控制符的作用(基本用法)

%c    输出一个单一的字符

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

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

%ho、%o、%lo  以八进制、不带前缀、无符号的形式输出 short、int、long 类型的整数

%#ho、%#o、%#lo  以八进制、带前缀、无符号的形式输出 short、int、long 类型的整数

%hx、%x、%lx、%hX、%X、%lX

以十六进制、不带前缀、无符号的形式输出 short、int、long 类型的整数。如果 x 小写,那么输出的十六进制数字也小写;如果 X 大写,那么输出的十六进制数字也大写。

%#hx、%#x、%#lx、%#hX、%#X、%#lX

以十六进制、带前缀、无符号的形式输出 short、int、long 类型的整数。如果 x 小写,那么输出的十六进制数字和前缀都小写;如果 X 大写,那么输出的十六进制数字和前缀都大写。

%f、%lf  以十进制的形式输出 float、double 类型的小数

%e、%le 、%E、%lE  以指数的形式输出 float、double 类型的小数。如果 e 小写,那么输出结果中的 e 也小写;如果 E 大写,那么输出结果中的 E 也大写。

%g、%lg、%G、%lG  以十进制和指数中较短的形式输出 float、double 类型的小数,并且小数部分的最后不会添加多余的 0。如果 g 小写,那么当以指数形式输出时 e 也小写;如果 G 大写,那么当以指数形式输出时 E 也大写。

%s  输出一个字符串

代码如下:

#include int main() { int a = 10; int b = -10; float c = 6.6f; double d = 3.1415926; double e = 10.10; char f = 'a'; // 有符号整数(可以输出负数) printf("a = %d\n", a); // 10 printf("a = %i\n", a); // 10 // 无符号整数(不可以输出负数) printf("a = %u\n", a); // 10 printf("b = %u\n", b); // 429496786 // 无符号八进制整数(不可以输出负数) printf("a = %o\n", a); // 12 printf("b = %o\n", b); // 37777777766 // 无符号十六进制整数(不可以输出负数) printf("a = %x\n", a); // a printf("b = %x\n", b); // fffffff6 // 无符号十六进制整数(不可以输出负数) printf("a = %X\n", a); // A printf("b = %X\n", b); // FFFFFFF6 // 单、双精度浮点数(默认保留6位小数) printf("c = %f\n", c); // 6.600000 printf("d = %lf\n", d); // 3.141593 // 以指数形式输出单、双精度浮点数 printf("e = %e\n", e); // 1.010000e+001 printf("e = %E\n", e); // 1.010000E+001 // 以最短输出宽度,输出单、双精度浮点数 printf("e = %g\n", e); // 10.1 printf("e = %G\n", e); // 10.1 // 输出字符 printf("f = %c\n", f); // a return 0; } C语言输出函数printf格式控制符的作用(进阶用法)

printf格式控制符完整格式:%[flag][width][.precision]type

(1)type如上所述;

(2)flag:标志字符,详情见下表:

  flag 作用

  -  表示左对齐。如果没有,就按照默认的对齐方式,默认一般为右对齐。

  +  用于整数或者小数,表示输出符号(正负号)。如果没有,那么只有负数才会输出符号。

  空格  用于整数或者小数,输出值为正时冠以空格,为负时冠以负号。

  #

  1)对于八进制(%o)和十六进制(%x / %X)整数,# 表示在输出时添加前缀;八进制的前缀是 0,十六进制的前缀是 0x / 0X。对于小数(%f / %e / %g)2)# 表示强迫输出小数点。如果没有小数部分,默认是不输出小数点的,加上 # 以后,即使没有小数部分也会带上小数点。

(3)width表示宽度;

(4) .precision 表示输出精度,也就是小数的位数。

  ①当小数部分的位数大于 precision 时,会按照四舍五入的原则丢掉多余的数字;

  ②当小数部分的位数小于 precision 时,会在后面补 0。

  此外,亦可用与字符串和整数:

  ①用于字符串时,.precision 表示最大输出宽度,或者说截取字符串。当字符串的长度大于 precision 时,会截掉多余的字符;当字符串的长度小于 precision 时,.precision 就不再起作用。

  ②用于整数时,.precision 表示最小输出宽度。与 width 不同的是,整数的宽度不足时会在左边补 0,而不是补空格。

部分用法示例

代码如下:

#include int main(void) { int a = 10, b = 20, c = 30; printf("%5d,%5d,%5d\n",a,b,c); printf("%.5d,%.5d,%.5d\n", a, b, c); printf("%-5d,%-5d,%-5d\n\n", a, b, c); int d = 10; printf("%d,%+d\n",d,d); printf("% d\n\n",d); double e = 5.6789; printf("%.2lf\n",e); printf("%.10lf\n", e); printf("%.0lf\n", e); printf("%#.0lf\n\n", e); char f[10] = "abcdefghi"; printf("%.3s,%.7s\n", f, f); return 0; }

输出结果如下图:

 代码演示:

#include int main() { int a = 123; // 整型 unsigned int b = 456;// 无符号整型 double c = 1.23; // 浮点数 double d = 12345.678; // 指数形式浮点数 int e = 0x123; // 十六进制 char f = 'a'; // 字符 char g[] = "hello world"; // 字符串 int* h = &a; // 指针地址 unsigned long i = 1234567890ul;// 无符号长整型 long long j = -123450000000ll;// 有符号长长整型 long double l = 1.23;// 长双精度浮点数 unsigned long long k = 123450000000ull;// 无符号长长整型 int num = 123; double fnum = 3.14159; printf("%d\n", a); // 输出 123 printf("%u\n", b); // 输出 456 printf("%f\n", c); // 输出 1.230000 printf("%e\n", d); // 输出 1.234568e+04 printf("%x\n", e); // 输出 123 printf("%c\n", f); // 输出 a printf("%s\n", g); // 输出 hello world printf("%p\n", h); // 输出 a 的地址 printf("%lu\n", i); // 输出 1234567890 printf("%lld\n", j); // 输出 -123450000000 printf("%Lf\n", l); // 输出 1.230000 printf("%llu\n", k); // 输出 123450000000 printf("%%\n"); // 百分号转义输出 % // 格式修饰符 printf("%-5d\n", num); // 输出 123 (左对齐) printf("%+d\n", num); // 输出 +123(输出符号) printf("%#x\n", num); // 输出 0x7b(十六进制前缀) printf("%05d\n", num); // 输出 00123(用 0 左对齐填充) printf("%.2f\n", fnum); // 输出 3.14 (精度控制) printf("%*.*f\n", 8, 2, fnum); // 输出 3.14 (动态宽度和精度,从后面两个 int 参数中传入) // 转义字符 printf("hello\tworld\n"); // 输出 hello world return 0; }

 输出结果如下图:

 

对于修饰符和格式控制符的使用,可以参考具体的 C 语言教程或参考手册,根据实际需要选择使用。同时,可以使用 printf 函数的返回值来判断是否输出成功。

scanf()输入十进制,八进制和十六进制值

scanf 输入十六进制

在这里,我们将声明一个无符号的char变量,并输入不同格式的值,例如十进制格式,八进制格式和十六进制格式。

输入和打印十进制值–我们使用“%d”格式说明符

输入和打印八进制值–我们使用“%o”格式说明符

输入和打印十六进制值–我们使用“%x”格式说明符

#include int main(void) { //data range of unsigned char is in, //1) decimal format 0 to 255 //2) octal format 0 to 377 //3) hexadecimal format 0 to ff unsigned char var; printf("Enter decimal value b/w 0 to 255: "); scanf("%d", &var); printf("var = %d\n", var); printf("Enter octal value b/w 0 to 377: "); scanf("%o", &var); printf("var = %o\n", var); printf("Enter hexadecimal value b/w 0 to ff: "); scanf("%x", &var); printf("var = %x\n", var); return 0; }

输出量

Enter decimal value b/w 0 to 255: 198 var = 198 Enter octal value b/w 0 to 377: 172 var = 172 Enter hexadecimal value b/w 0 to ff: f9 var = f9

翻译自: https://www.includehelp.com/c-programs/input-decimal-octal-and-hexadecimal-values-in-character-variables.aspx



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3