Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.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
当scanf遇到格式字符串中的空格时,它会做什么? #包括 内部主(空) { INTA; scanf(“%d”和“&a”); printf(“\n%d”,a); 返回0; }_C - Fatal编程技术网

当scanf遇到格式字符串中的空格时,它会做什么? #包括 内部主(空) { INTA; scanf(“%d”和“&a”); printf(“\n%d”,a); 返回0; }

当scanf遇到格式字符串中的空格时,它会做什么? #包括 内部主(空) { INTA; scanf(“%d”和“&a”); printf(“\n%d”,a); 返回0; },c,C,当我输入并按enter键时,它会等待另一个值,在给出第二个值后,它会显示我在开始时给它的输出。为什么?scanf()遇到格式字符串中的空格时会做什么?更改 #include <stdio.h> int main(void) { int a; scanf(" %d ", &a); printf("\n%d", a); return 0; } 到 否则,scanf将等待您传递一个非空白字符。更改 #include <stdio.h&g

当我输入并按enter键时,它会等待另一个值,在给出第二个值后,它会显示我在开始时给它的输出。为什么?
scanf()
遇到格式字符串中的空格时会做什么?

更改

#include <stdio.h>

int main(void)
{
    int a;
    scanf(" %d ", &a);
    printf("\n%d", a);
    return 0;  
}

否则,
scanf
将等待您传递一个非空白字符。

更改

#include <stdio.h>

int main(void)
{
    int a;
    scanf(" %d ", &a);
    printf("\n%d", a);
    return 0;  
}


否则,
scanf
将等待您传递一个非空白字符。

当格式字符串中有空白字符时,将使用零个或多个空白字符,直到遇到一个非空白字符为止。换行符是空白

因此,特别是对于交互式输入,在格式字符串中拖尾空白是个坏主意!在代码中,删除尾随空格。(请注意,您可以在第一个数字之后键入任何内容,而不仅仅是另一个数字,代码将报告您输入的第一个数字;额外的数据可用于另一个读取操作,即使您的程序实际上没有读取它。)


大多数转换规范也忽略了前导空格。例外情况是
%c
%n
%[…]
(最后一个是扫描集转换规范)。

当格式字符串中有空格时,会使用零个或多个空格字符,直到遇到非空格字符为止。换行符是空白

因此,特别是对于交互式输入,在格式字符串中拖尾空白是个坏主意!在代码中,删除尾随空格。(请注意,您可以在第一个数字之后键入任何内容,而不仅仅是另一个数字,代码将报告您输入的第一个数字;额外的数据可用于另一个读取操作,即使您的程序实际上没有读取它。)

大多数转换规范也忽略了前导空格。例外情况是
%c
%n
%[…]
(最后一个是扫描集转换规范)。

来自:

函数将读取并忽略任何空格 在下一个非空白字符之前遇到的字符 (空白字符包括空格、换行符和制表符-- 参见isspace)。格式字符串中的单个空格验证任何 从流中提取的空白字符的数量(包括 没有)

所以改变

scanf("%d",&a);  

发件人:

函数将读取并忽略任何空格 在下一个非空白字符之前遇到的字符 (空白字符包括空格、换行符和制表符-- 参见isspace)。格式字符串中的单个空格验证任何 从流中提取的空白字符的数量(包括 没有)

所以改变

scanf("%d",&a);  


删除%d之后的空间。删除%d之后的空间。
scanf("%d",&a);