gpt4 book ai didi

C - 打印数组

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

我正在尝试实时打印我在数组中添加的元素。

一切似乎都工作正常,但是

例如

I add the numbers 1 2 3

但结果是: 9966656 2686588 1 2 3

我不知道为什么它也打印 9966656 2686588 而不仅仅是 1 2 3

    int numbers[100] , c , x;
char answer;
puts("Please insert a value");

GO:
scanf("%d", &numbers[c]);
getchar();
puts("Do you want to add another value? y/n");
scanf("%c",&answer);
if (answer == 'y') {
c = c + 1;
puts("Please insert another value");
goto GO;
} else {
x = c;

for (c = 0; c < x + 1; c++) {
printf("%d ",numbers[c]);
}
}

*======================

如果您有不明白的地方请告诉我*

最佳答案

有几个问题需要解决。如果您使用启用警告进行编译(例如将 -Wall -Wextra 添加到您的编译字符串中),那么所有这些内容都会为您拼写出来。例如:

$ gcc -Wall -Wextra -o bin/go go.c

go.c: In function ‘main’:
go.c:17:5: warning: format ‘%c’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[30]’ [-Wformat=]
scanf("%c",&answer);
^
go.c:18:15: warning: comparison between pointer and integer [enabled by default]
if(answer == 'y')

如果您解决每个警告,直到代码在没有警告的情况下编译,那么您就会遇到主要问题:

for(c = 0; c < x + 1; c++)

x + 1导致循环读取超出数据末尾的内容。因为您没有初始化 numbers ,它正在读取默认情况下存在的垃圾值。这是另一个很好的教训:始终初始化变量

您的管理方式也会遇到问题xcc仅应在用户成功转换小数后更新,如 scanf 读取的那样。 scanf作为返回值,提供成功转化的数量。您需要使用返回来检查用户输入的有效小数,然后更新 c仅在成功转换后(不是用户输入 y/n 的结果。

稍微清理一下,将逻辑稍微重新安排一下,效果会更好:

#include <stdio.h>

int main (void) {

int numbers[100] = { 0 };
int c = 0;
int i = 0;
char answer[30] = { 0 };

printf (" Please insert a value: ");

GO:

if (scanf ("%d", &numbers[c]) == 1)
c++;
getchar ();
printf (" Do you want to add another value (y/n)? ");
scanf ("%c", answer);
if (*answer == 'y') {
printf (" Please insert another value: ");
goto GO;
}

for (i = 0; i < c; i++) {
printf (" number[%2d] : %d\n", i, numbers[i]);
}

return 0;
}

输出

$ ./bin/go
Please insert a value: 10
Do you want to add another value (y/n)? y
Please insert another value: 11
Do you want to add another value (y/n)? y
Please insert another value: 12
Do you want to add another value (y/n)? n
number[ 0] : 10
number[ 1] : 11
number[ 2] : 12

(注意:我将 x 更改为 i - 只是觉得迭代 i 更正常)

关于C - 打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33658228/

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