gpt4 book ai didi

c - 在 getchar 之后使用 Scanf?

转载 作者:太空宇宙 更新时间:2023-11-04 05:27:05 25 4
gpt4 key购买 nike

我正在学习 C 编程类(class)。我不明白这些代码。

#include <stdio.h>
int main()
{
int c;
int ival;
printf("type : ");
c = getchar();
scanf("%d", &ival);
printf("c = %d\n", c); //65
printf("ival = %d\n", ival); //127
return 0;
}

例如,每当我键入 Abc 时,我都会得到 c = 65ival = 1。为什么ival是1?

最佳答案

ival 从未被初始化,所以它可以有任何值。原因是,c 正在接收 'A'(通过 getchar())然后 scanf 无法读取数字(因为输入中的下一个字符 'b' 不是十进制数),因此它永远不会触及 ival

您可以检查 scanf 的返回值,看它是失败还是成功:

if (scanf("%d", &ival) != 1)
printf("you need to enter a number\n");
else
printf("entered: %d\n", ival);

请注意,scanf 返回它成功读取和分配的 items 的数量。例如,如果所有三项都被正确读取,scanf("%d %f %c", ...) 将返回 3。1


1请注意,assigned 表示忽略的输入(例如带有赋值抑制修饰符 (*) 的输入)不会不计入 scanf 的返回值 (C11, 7.21.6.2.10,16)。此外,%n 不会影响 scanf 的返回值(C11,7.21.6.2.12)。

关于c - 在 getchar 之后使用 Scanf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21114603/

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