字符输入/输出函数的format
2017-08-14 17:06
851 查看
格式化format
输出:%[flags][width][.precision][length] specifer
输入:%[*][width][length]specifier
flags:(输出)
- 左对齐,默认右对齐
+ 正数显示+,负数显示-
# %#x或%#X按照十六进制0x+数值或者0X+数值形式输出,%#o按照八进制0+数值形式输出
0 数值宽度小于width参数时左侧补0
width:(输入/输出)
作为输入函数时:表示最多接收多少字符(小数点也算一个字节)。
作为输出函数时:表示最少输出多少字符,原数值字符个数小于width时按照对齐方式补0或空格,
原数值字符个数大于width时原样输出。限制小数时小数点也算一个字符。
.precision精确度:(输出)
.number:用在d、i、u、x、X、o类型,当数值字符个数小于number时前置补0。
用在e、E、f、F类型,表示小数点后面有几位数。
用在g、G类型表示有效数字(左侧第一个非0数字开始)最大宽度(不包括小数点)
用在s类型表示最多输出多少字符
specifer分隔符(输入/输出)
%d or %i 符号类型signed十进制整数,作输入函数时%i还可以接收八进制、十六进制数
%u 无符号类型unsigned十进制整数,作输入函数时%i还可以接收八进制、十六进制数
%o 八进制
%x 小写十六进制
%X 大写十六进制
%f or %F 浮点数
%e 科学计数法1.2e+3 == 1200
%E 科学计数法1.2E-3 == 0.0012
%g 使用最短小数表示法%f 或者 %e
%G 使用最短小数表示法%F 或者 %E
%c 字符
%s 字符串
%p 指针地址
%% % 输出函数打印%,输入函数匹配'%'
%n
// 作为输入函数%n不作为一个输入参数,它记录用户输入了多少有效字符,不会影响scanf返回值
scanf("%c%n", &ch, &count); 无论输入多少字符count都等于1,因为%c只接收1个字符
scanf("%d%n", &iv, &count);输入1结束后count等于1,输入12结束后count=2
scanf("%c %c %c%n", &ch, &ch1, &ch2, &count); 输入abc结束count=3;输入a b c结束count=5,空格也计数。
// 作为输出函数记录从开始位置到%n输出了多少字符,不会影响printf返回值
printf("i=%d, j=%d/n%n", i, j, &k);
在i=343、j=123的情况下,k=12。
%[] 输入
[]组成扫描列表,从输入数据获得符合扫描成员的数据直到遇到不符合扫描成员结束。
char arr[15];
scanf("%[abcd]",arr); "abcd"组成扫描成员,输入"cbdeaf",arr="cbd","eaf"依然留在缓冲区,下文讲解清空缓冲去的方法。
scanf("%[][abc]"); "][abc"组成扫描成员。
scanf("%[[]abc]"); "[]abc"不能组成扫描成员,"]"只能紧跟"^"或"["才能组成扫描成员。
%[^] 输入
[^]组成扫描列表,从输入数据获得扫描成员以外的数据直到遇到符合扫描成员结束。
char arr[15];
scanf("%[^123]", arr); 识别123以外的数或字母
输入abc4561,arr="abc456","1"留在缓冲区
scanf("%[^][123]"); "][123"以外的字符串
大多数编译器支持scanf("%[a-zA-Z]");中的"-"表示只接收26个字母,少数编译器把"-"理解成减号。(需要个人测试)
清空缓冲区:
使用scanf("%*[^\n]%*c"); // ’*’表示读入某类型的内容,但是这个内容不保存到变量里,所以后面不需要对应的参数。
输出:%[flags][width][.precision][length] specifer
输入:%[*][width][length]specifier
flags:(输出)
- 左对齐,默认右对齐
+ 正数显示+,负数显示-
# %#x或%#X按照十六进制0x+数值或者0X+数值形式输出,%#o按照八进制0+数值形式输出
0 数值宽度小于width参数时左侧补0
width:(输入/输出)
作为输入函数时:表示最多接收多少字符(小数点也算一个字节)。
作为输出函数时:表示最少输出多少字符,原数值字符个数小于width时按照对齐方式补0或空格,
原数值字符个数大于width时原样输出。限制小数时小数点也算一个字符。
.precision精确度:(输出)
.number:用在d、i、u、x、X、o类型,当数值字符个数小于number时前置补0。
用在e、E、f、F类型,表示小数点后面有几位数。
用在g、G类型表示有效数字(左侧第一个非0数字开始)最大宽度(不包括小数点)
用在s类型表示最多输出多少字符
specifer分隔符(输入/输出)
%d or %i 符号类型signed十进制整数,作输入函数时%i还可以接收八进制、十六进制数
%u 无符号类型unsigned十进制整数,作输入函数时%i还可以接收八进制、十六进制数
%o 八进制
%x 小写十六进制
%X 大写十六进制
%f or %F 浮点数
%e 科学计数法1.2e+3 == 1200
%E 科学计数法1.2E-3 == 0.0012
%g 使用最短小数表示法%f 或者 %e
%G 使用最短小数表示法%F 或者 %E
%c 字符
%s 字符串
%p 指针地址
%% % 输出函数打印%,输入函数匹配'%'
%n
// 作为输入函数%n不作为一个输入参数,它记录用户输入了多少有效字符,不会影响scanf返回值
scanf("%c%n", &ch, &count); 无论输入多少字符count都等于1,因为%c只接收1个字符
scanf("%d%n", &iv, &count);输入1结束后count等于1,输入12结束后count=2
scanf("%c %c %c%n", &ch, &ch1, &ch2, &count); 输入abc结束count=3;输入a b c结束count=5,空格也计数。
// 作为输出函数记录从开始位置到%n输出了多少字符,不会影响printf返回值
printf("i=%d, j=%d/n%n", i, j, &k);
在i=343、j=123的情况下,k=12。
%[] 输入
[]组成扫描列表,从输入数据获得符合扫描成员的数据直到遇到不符合扫描成员结束。
char arr[15];
scanf("%[abcd]",arr); "abcd"组成扫描成员,输入"cbdeaf",arr="cbd","eaf"依然留在缓冲区,下文讲解清空缓冲去的方法。
scanf("%[][abc]"); "][abc"组成扫描成员。
scanf("%[[]abc]"); "[]abc"不能组成扫描成员,"]"只能紧跟"^"或"["才能组成扫描成员。
%[^] 输入
[^]组成扫描列表,从输入数据获得扫描成员以外的数据直到遇到符合扫描成员结束。
char arr[15];
scanf("%[^123]", arr); 识别123以外的数或字母
输入abc4561,arr="abc456","1"留在缓冲区
scanf("%[^][123]"); "][123"以外的字符串
大多数编译器支持scanf("%[a-zA-Z]");中的"-"表示只接收26个字母,少数编译器把"-"理解成减号。(需要个人测试)
清空缓冲区:
使用scanf("%*[^\n]%*c"); // ’*’表示读入某类型的内容,但是这个内容不保存到变量里,所以后面不需要对应的参数。
相关文章推荐
- 字符串替换空格: 请实现一个函数,把字符数组中的每个空格替换成“%20”。 例如输入“we are happy.”,则输出“we are happy.”
- 设计一个函数,输入一个4位数字,要求输出这4个数字字符,但每个数字间空一个空格。
- CString::Format()函数与格式输入与输出
- 写一个函数,输入一行字符,将此字符串中最长的单词输出。
- 用格式输出函数输入三个字符,并用输出函数反向输出三个字符和他们的ASCII码
- 编写一函数 用户输入字符串 函数将获取第一个单词输出 并丢掉后面的字符(图)
- 实验 9 指针1 输入一行字符,要求用自定义的函数void f(char *line)统计和输出字符串中数字字符、英文字符和其他字符的个数
- 习题 7.9 编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格、和其他字符的个数,在主函数中输入字符串以及输出上述的结果。
- 习题 7.10 写一个函数,输入一行字符,将此字符串中最长的单词输出。
- (c++)编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
- C语言字符输入/输出函数
- 2.6 输入一个除空格以外的可见字符(保证在函数scanf中可使用格式说明符%c读入),输出其ASCII码。
- C语言基础学习基本数据类型-字符专属的输入输出函数
- 编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
- 编写一个函数,由实参传来一个字符串,统计此字符串中字母,数字,空格,和其他字符的个数,在主函数中输入字符串以及输出上述统计的结果。再考虑将算的的结果放在一个数组中
- 编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
- 单个字符的输入输出函数
- 编写一个函数,从实参传来一个字符串,统计其中字母,数字,空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果
- 7.10 写一函数,输入一行字符,将此字符串中最长的单词输出。
- C语言基础学习基本数据类型-字符专属的输入输出函数