gpt4 book ai didi

c - 数组和 scanf 输入是否齐头并进?

转载 作者:行者123 更新时间:2023-11-30 18:42:21 25 4
gpt4 key购买 nike

下面用c语言写的代码有什么问题吗?我遇到了段错误。它是什么?

int a[2];
for(i=0;i<2;i++)
{
scanf("%d",a[i]);
printf("%d",a[i]);
}

为什么无法运行?留下有关声明的信息。 scanf有延迟问题吗?

最佳答案

这个:

scanf("%d",a[i]);

是错误的。 %d 格式说明符需要一个指针,指向转换后值应存储的位置,即它应该是:

scanf("%d", &a[i]);

这是必需的,因为否则您会将 a[i] 的值传递给 scanf(),使其无法更改值(value)。通过传递值的地址,scanf() 可以简单地写入提供的内存地址来更改存储在那里的值。使用 printf(),您不希望自己的值发生变化,因此将它们直接传递给 printf() 就可以了。

此外,转换(像许多其他形式的 I/O 一样)可能会失败,因此您应该在依赖转换成功之前检查返回值:

if( scanf("%d", &a[i]) == 1 )
printf("%d\n", a[i]);

您可能应该阅读the manual page for scanf()再多几次。 :)

关于c - 数组和 scanf 输入是否齐头并进?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17172691/

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