当我之间不包含空格时%d
and %c
格式字符串中的规范scanf()
在以下程序中运行函数,并在运行时输入“4 h”,则输出为“Integer = 4 and Character= .
究竟如何可变"c"
在这种情况下接受输入,如果我在之间包含空格,会有什么区别%d
and %c
规格 ?
Code
#include <stdio.h>
int main()
{
char c;
int i;
printf("Enter an Integer and a character:\n");
scanf("%d %c",&i,&c);
printf("Integer = %d and Character = %c\n",i,c);
getch();
}
如果您阅读了规范scanf() http://pubs.opengroup.org/onlinepubs/9699919799/functions/scanf.html小心地,大多数格式说明符都会跳过前导空格。在标准 C 中,有 3 个没有:
-
%n
— 到目前为止已处理了多少个字符
-
%[…]
— 扫描集
-
%c
— 读取一个字符。
(POSIX 添加了第四个,%C
,这相当于%lc
.)
输入空白字符(由isspace
) 应被跳过,除非转换规范包含[
, c
, C
, or n
转换说明符。
添加之间的空格%d
and %c
表示在读取整数之后和读取(非空白)字符之前跳过可选空白。
请注意,格式字符串中的文字字符(空格除外,例如,X
and Y
in "X%dY"
) 不要跳过空格。匹配此类字符也不算成功转换;它们不影响返回值scanf()
et al.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)