gpt4 book ai didi

c - 如何用 scanf() 解释我的代码?

转载 作者:行者123 更新时间:2023-11-30 15:02:51 26 4
gpt4 key购买 nike

我是 C 编程新手,现在正在学习 scanf

我写了一些代码,我正在尝试理解它。

这是代码:

 #include <studio.h>
int main(){
int a=1, b=2, c=3;
scanf ("%d%d", &a,&b);
scanf ("%d", &c);
scanf ("%d", &c);
printf ("a=%d\nb=%d\nc=%d\n", a, b, c);
return 0;
}

When I input
11 22 33 44
The output is
a=11
b=22
c=44

这是正常的。但是,当我输入:

11, 22, 33, 44
Output
a=11
b=2
c=3

看起来逗号停止了输入过程。

谁能帮我解释一下为什么会出现这种情况?

实际上,当在%d%d之间放置逗号(就像“%d, %d”)并提供输入数据时,输入必须用逗号分隔。

谁可以给我一些有关 scanf 参数中逗号的建议?

最佳答案

scanf 在 stdin 中发现与格式字符串不匹配的字符时停止读取。

在您的示例中,您的 scanf 只期望形成整数值的字符。事实上,第一个 scanf 在到达第一个逗号时停止。当其他 scanf 尝试读取标准输入时,它们找到的第一个字符将是先前 scanf 读取但未使用的最后一个字符,即逗号。这就是为什么他们什么都没读就很快结束的原因。

如果您想在输入中使用逗号或其他字符来代替要记住的值,则必须将它们明确插入格式字符串中。

例如以下语句:

    scanf("%d, %d", &a, &b);

您正在指示 scanf 读取一个整数并将其保存在变量 a 中,读取一个逗号并忘记它,然后读取另一个整数并将其保存在变量 b 中。如果在解析过程中 scanf 发现一些不是整数或逗号的东西,它们将立即停止而不读取其他值(这就是为什么 b 和 c 在程序中具有较早值的原因)。

关于c - 如何用 scanf() 解释我的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40933953/

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