gpt4 book ai didi

c - 为什么在获取整数作为输入时不需要 getchar() ?

转载 作者:行者123 更新时间:2023-11-30 14:42:56 28 4
gpt4 key购买 nike

int main()
{
char a,b;
scanf("%c",&a);
getchar();
scanf ("%c",&b);
}

如果您不使用 getchar 来表示字符,则 scanf 会将空格作为输入,但对于整数,则不需要 getchar:

int main()
{
int a,b;
scanf("%d",&a);
scanf ("%d",&b);
}

最佳答案

Why don't you need a getchar() while getting integer as an input?

根据提供的两个示例之间的差异来解释您的问题,您似乎是在询问 scanf 处理 %c 指令与其处理 %d 指令。最简单的解释是 scanf 的规范规定,当它尝试匹配 %d 指令时,它必须跳过任何前导空格。顺便说一下,它可以包含任意数量的字符,并且可以将 ASCII 0x20 以外的更多字符识别为空白。

%c 实际上是这里的一个奇怪的东西。在所有匹配和转换输入的 scanf 指令中,它是仅有的两个跳过前导空格的指令之一。这是有道理的,因为它允许 scanf() 读取空格字符作为输入,并且因为您可以通过在格式字符串之前插入空格字符来指示它匹配(从而跳过)前导空格%c (或任何其他)指令。或者,您可以通过在格式中插入额外的 %*c 指令来读取并忽略任何单个字符,就像您的 getchar() 实际所做的那样.

对大多数其他指令执行的空白跳过是为了方便地迎合固定格式的表格数据,这些数据在各个项目之间可能具有不同的空间量。

关于c - 为什么在获取整数作为输入时不需要 getchar() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54260348/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com