gpt4 book ai didi

c - 如何使 scanf 函数打印整个数组

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

我写了一个简单的代码,应该读取一个数组并打印它,但它没有打印任何东西。

我注意到,当我进行第一个 for 循环时转到 n-1 而不是 n (但第二个循环仍然转到 n),它确实有效。示例:

输入:1 2 3 4 5 6
输出:1 2 3 4 5 0

当第二个循环走到n-1时它也起作用,所以错误在第一个循环或scanf函数中。

我该怎么做才能打印整个数组?

#include <stdio.h>

#define MAX_LENGTH 50

int main() {
int a[MAX_LENGTH];
int n, i;
printf("Insert the length of array: ");
scanf("%d", &n);
printf("Insert elements of array: ");
for (i = 0; i < n; i++)
scanf("%d ", &a[i]);
for (i = 0; i < n; i++)
printf("%d ", a[i]);
}

最佳答案

问题是您在 scanf() 格式中有一个尾随空格:scanf 一直在等待更多输入,直到您输入的内容不是空格,换行符是空白。

您应该只使用 "%d" 作为 scanf() 格式。

此外,您应该检查 scanf() 的返回值,以避免在无效输入时出现未定义的行为。

这是更正后的版本:

#include <stdio.h>

#define MAX_LENGTH 50

int main() {
int a[MAX_LENGTH];
int n, i;

printf("Insert the length of array: ");
if (scanf("%d", &n) != 1)
return 1;
if (n > MAX_LENGTH) {
printf("too many numbers, limiting to %d\n");
n = MAX_LENGTH;
}
printf("Insert elements of array: ");
for (i = 0; i < n; i++) {
if (scanf("%d", &a[i]) != 1)
return 1;
}
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}

关于c - 如何使 scanf 函数打印整个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55549599/

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