Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在%*c左右使用空格_C_Input_Output_Scanf - Fatal编程技术网

为什么在%*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
newline
5
newline
6
-您的
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左右需要空白