为什么在%*c左右使用空格
这是第一个代码:为什么在%*c左右使用空格,c,input,output,scanf,C,Input,Output,Scanf,这是第一个代码: int a, b; scanf("%d%*c%d",&a,&b); printf("%d %d",a,b); 如果我输入 4 5 它打印 4 5 4 6 这是第二个代码: int a,b; scanf("%d %*c %d",&a,&b); printf("%d %d",a,b); 如果是输入 4 5 6 它打印 4 5 4 6 为什么%*c跳过一个被空白包围的字符你输入的不是你想象的那样:想想这两个输入序列是4然后是5和4然
int a, b;
scanf("%d%*c%d",&a,&b);
printf("%d %d",a,b);
如果我输入
4
5
它打印
4 5
4 6
这是第二个代码:
int a,b;
scanf("%d %*c %d",&a,&b);
printf("%d %d",a,b);
如果是输入
4
5
6
它打印
4 5
4 6
为什么
%*c
跳过一个被空白包围的字符你输入的不是你想象的那样:想想这两个输入序列是4
然后是5
和4
然后是5
然后是6
——你输入的是4
换行5
和4
newline5
newline6
-您的scanf
中的空格可以匹配空格或换行符
请注意,您还应使用以下工具进行测试:
4 5
4,5
4?5
4 5 6
4,5,6
等等。问:为什么在“%*c”
周围使用空格
答:“%*c”
中的空白是一个scanf()
指令,在扫描过程中跳过空白(0或更多),从而防止“%*c”
本身读取空白。如果没有前导空格,“%*c”
将扫描任何1字符,无论是否为空格。“%*c”
中的尾随空格对“%*c”
已经执行的操作没有任何影响。后面的空白指令simple跳过后面的空白
“%*c”
周围不需要格式中的空白,这取决于编码目标
大多数说明符,如“%d”
,“%f”
,“%s”
跳过前导空格。(空白是'
,'\n'
,'\t'
等。请参见isspace()
)
简单地使用格式指令“
或”\n“
也会跳过空白
3个说明符“%c”
、“%n”
和“%[scanset]”
不跳过前导空格
由于许多程序员希望scanf()
注意:%d%*c%d”
将与%d%*c%d”
扫描的内容相同?它真的包含逗号吗?不,它没有包含逗号。我认为一条评论说这是离题的,并不是鼓励你一次又一次地重复同一个问题……阅读:*
==作业限制。此修饰符会使相应的输入匹配和转换,但不会赋值(不需要匹配参数)。
但是Grijesh我想知道为什么在%*c左右需要空白