我是靠谱客的博主 优雅耳机,最近开发中收集的这篇文章主要介绍c语言格式化字符串9.6f,C语言回炉之字符串和格式化输入输出,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C语言回炉之字符串和格式化输入输出

char[] 和 null

字符串 和 字符

define

const

明示常量

printf转换说明符

printf转换修饰符

printf转换标记

scanf的转换说明符

scanf的转换修饰符

printf 和scanf的*修饰符

printf() 的*修饰符

scanf()里边的*修饰符

char[] 和 null

C语言没有专门用于存储字符串的变量类型,字符串都被存储在char类型的数组中,字符串的字符被存储在连续的相邻的存储单元中,每个单元存储一个字符,C语言使用(空字符)来标记字符串的结束。空字符不是数字0,它是非打印字符,其ASCII码值是(或等价于)0,C语言的字符串一定以空字符结束,这意味这数组的容量必须比待存储的字符数多1。当我们定义字符串的时候,编译器会在末尾加上空字符。

字符串 和 字符

‘x’是一个x字符,“x”是由x字符和字符组成的字符串。

define

可以使用#define宏定义"明示常量",常用的定义语法如下:

#define NAME value

编译时,#define宏定义会被编译时替换。

const

C90标准新增了const关键字,用于限定一个变量为只读,例如:

const int MONTHS = 12;

明示常量

C语言库的头文件limits.h和float.h分别提供整数类型和浮点数类型大小限制相关的详细信息。每个头文件都定义了一些列供实现使用的明示常量,例如limits.h可能又以下预定义:

#define INT_MAX +32767

#define INT_MIN -32768

如果程序有 #include,则可以直接使用这些明示常量:

printf("Maximum int value on you system = %d n",INT_MAX);

limits.h中的明示常量

明示常量

含义

CHAR_BIT

char类型的位数

CHAR_MAX

char类型的最大值

CHAR_MIN

char类型的最小值

SCHAR_MAX

signed char类型的最大值

SCHAR_MIN

signed char类型的最小值

UCHAR_MAX

unsigned char类型的最大值

SHRT_MAX

short类型的最大值

SHRT_MIN

short类型的最小值

USHRT_MAX

unsigned shrt类型的最大值

INT_MAX

int类型的最大值

INT_MIN

int类型的最小值

UINT_MAX

unsigned int类型的最大值

LONG_MAX

long类型的最大值

LONG_MIN

long类型的最小值

ULONG_MAX

unsigned long类型的最大值

LLONG_MAX

long long类型的最大值

LLONG_MIN

long long类型的最小值

ULLONG_MAX

unsigned long long类型的最大值

同样的float.h头文件也定义一些明示常量,如FLT_DIG和DBL_DIG和LDBL_DIG,FLT,DBL,LDBL开头分别对应float,double,long double。

float.h中的明示常量

明示常量

含义

FLT_MANT_DIG

float类型的尾数位数

FLT_DIG

float类型的最小有效位数(十进制)

FLT_MIN_10_EXP

带全部有效数字的float类型的最小负数(以10为底)

FLT_MAX_10_EXP

float类型的最大正指数(以10为底)

FLT_MIN

保留全部精度的float类型的最小正数

FLT_MAX

float类型的最大正数

FLT_EPSILON

1.00和比1.00大的最小float类型值之间的差值

printf转换说明符

转换说明符

意义

%a(%A)

浮点数、十六进制数字和p记数法(C99/C11)

%c

单个字符

%d

有符号十进制整数

%f

浮点数(包括float和doulbe) 十进制记数法

%e(%E)

浮点数指数输出[e-(E-)记数法]

%g(%G)

根据值的不用自动选择%f或%e,%e格式用于指数小于-4或者大于等于精度

%i

有符号十进制整数(与%d相同)

%u

无符号十进制整数

%o

八进制整数

%x(%X)

十六进制整数0f(0F) e.g. 0x1234

%p

指针

%s

字符串

%%

输出字符%

printf转换修饰符

修饰符

意义

标志

五种标志将在后面的表中说明,可以使用零个或者多个标志示例: “%-10d”

digit(s)

字段宽度的最小值。如果字段不能容纳要打印的数或者字符串,系统会使用更宽的字段示例: “%4d”,“%10s”

.digit(s)

精度.对于%e,%E和%f转换,是将要在小数点的右边打印的数字的位数。对于%g和%G转换,是有效数字的最大位数。对于%s转换,是将要打印的字符的最大数目。对于整数转换,是将要打印的数字的最小位数。如果必要,要使用前导0来达到位数。只使用"."表示其后跟随一个0,所以%.f和%.0f相同示例: “%5.2f”表示打印一个浮点数,它的字段宽度为5个字符,小数点后有两个数字

h

和整数转换说明符一起使用,表示一个short int或unsigned short int类型数值。示例: “%hu”, “%hx”, “%6.4hd”

hh

和证书转换说明符一起使用,表示一个signed char或unsigned char类型数值

j

和整数转换说明符一起使用,表示一个intmax_t或uintmax_t值 示例: “%jd”,"%8jx"

l

和整数转换说明符一起使用,表示一个long int或unsigned long int类型值

ll

和整数转换说明符一起使用,表示一个long long int或unsigned long long int类型值(C99) 示例: “%lld”,"%8llu"

L

和浮点数转换说明符一起使用,表示一个long double值 示例: “%Lf”, “%10.4Le”

t

和整数转换说明符一起使用,表示一个ptrdiff_t值(与两个指针之间的差相对应的类型)(C99) 示例: “%td”, “%1ti”

z

和整数转换说明符一起使用,表示一个size_t值(sizeof返回的类型)(C99)示例: “%zd”,"%12zx"

printf转换标记

标志

意义

-

项目左对齐,即,会把项目打印在字段的左侧开始处示例: “%-20s”

+

有符号的值若为正,则显示带加号的符号;若为负,则显示带减号的符号示例: “%+6.2f”

(空格)

有符号的值若为正,则显示时带前导空格(但是不显示符号);若为负,则带减号符号。+标志会覆盖空格标志示例: “% 6.2f”

#

使用转换说明的可选形式。若为%o格式,则以0开始;若为%x和%Xgeshi ,则以0x或0X开始。对于所有的浮点形式,#保证了即使不跟任何数字,也打印一个小数点字符。对于%g和%G格式,它防止尾随0被删除示例: “%#o”, “%#8.0f”, “%+#10.3E”

0

对于所有的数字格式,用前导零而不是空格填充字段宽度。如果出现-标志或者指定了精度(对于整数)则忽略该标志示例: “%010d”, “%08.3f”,"%02X"

scanf的转换说明符

转换说明符

意义

%c

把输入解释成一个字符

%d

把输入解释成一个有符号十进制整数

%e,%f,%g,%a

把输入解释成一个浮点数

%E,%F,%G,%A

把输入解释成一个浮点数

%i

把输入解释成一个有符号十进制整数

%o

把输入解释成一个有符号八进制整数

%p

把输入解释成一个指针

%s

把输入解释成一个字符串;输入的内容以第一个非空白字符作为开始,并且包含直到下一个空白字符的全部字符

%u

把输入解释成一个无符号十进制整数

%x,%X

把输入解释成一个有符号十六进制整数

scanf的转换修饰符

修饰符

意 义

*

滞后赋值。示例:“%*d”

digit(s)

最大字段宽度;在达到最大字段宽度或者遇到第一个空白字符时(不管哪一个先发生都一样)停止对输入项的读取。示例:“s”

hh

把整数读作signed char 或 unsigned char 。示例:“%hhd”“%hhu”

ll

把整数读作long long或者 unsigned long long (C99)。示例:“%lld”“%llu”

h,l或L

“%hd”和“hi”指示该值将会存储在一个short int中。“%ho”“%hx”和“%hu”指示该值将会存储在一个unsigned short int中。“%ld”和“%li”指示该值将会存储在一个long中。“%lo”“%lx”和“%lu”指示该值将会存储在一个unsigned long中。“%le”“%lf”和“%lg”指示该值以double类型存储。将L(而非l)与e、f和g一起使用指示该值以long double类型存储。如果没有这些修饰符,d、i、o和x指示int类型,而e、f和g指示float类型。

j

在整形转换说明后面,表达使用 intmax_t或uintmax_t类型(C99)示例:“jd” “jo”

z

在整形转换说明后面,表明使用sizeof的返回类型 示例:“%zd” “%zo”

t

在整形转换说明后面,表明使用两个指针之间的差值的类型(C99)示例: “%td” “%tx”

printf 和scanf的*修饰符

printf() 和scanf() 都可以使用*修饰符来修饰转换说明的含义。

printf() 的*修饰符

如果事先没有指定字段宽度,想用程序来指定,那么就可以用*修饰符来代替字段宽度,但是需要一个参数告诉函数,字段宽度应该为多少。 即%d,参数应该包含和d的对应的值

#include

int main()

{

unsigned width,precision;

int number=256;

double weight=242.5;

printf("enter a field width:n");

scanf("%d",&width);

printf("the number is:%*d:n",width,number);

printf("now enter a width and precision:n");

scanf("%d%d",&width,&precision);

printf("weight=%*.*fn",width,precision,weight);

printf("done!n");

return 0;

}

scanf()里边的*修饰符

如果把*放在%和转换字符之间,就会跳过相应的输出项。

#include

int main()

{

int n;

printf("please enter three integers:n");

scanf("%*d %*d %d",&n);

printf("the last integers was%dn",n);

return 0;

}

上面的案例就会跳过2各整数,将第三个整数复制给n.

最后

以上就是优雅耳机为你收集整理的c语言格式化字符串9.6f,C语言回炉之字符串和格式化输入输出的全部内容,希望文章能够帮你解决c语言格式化字符串9.6f,C语言回炉之字符串和格式化输入输出所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部