gpt4 book ai didi

c - 迭代 3D 数组

转载 作者:行者123 更新时间:2023-11-30 14:46:00 26 4
gpt4 key购买 nike

我的代码中不断出现总线错误 10,但我不知道为什么。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define SIZE 100

int main() {

char input[SIZE];

int dummy[SIZE];

int array[SIZE][SIZE][SIZE];

int set=-1;
int sequence=0;


while (1==1) {
if (fgets(input, SIZE-1, stdin) == NULL){
printf("Input Error.");
break;
}else {

char* s;

for (s = input; (*s != '\n') && isspace(*s); s++){
;
}

if (*s == 'f'){ //start of finish

break;

} else if (*s == 'S'){ //start of SET

set++;

} else{

sscanf(input, "%d: %d, %d, %d, %d, %d", &dummy[0],
&dummy[1], &dummy[2], &dummy[3], &dummy[4],
&dummy[5]);

array[set][sequence][0]=dummy[0];

array[set][sequence][1]=
dummy[1]+dummy[2]+dummy[3]+dummy[4]+dummy[5];

sequence++;

}

}
}

for (int i=0; i<sizeof(array); i++ ){
printf("SET %d\n", i+1);
for (int j=0; j<sequence;j++){
printf("%d", array[i][j][0]);
for (int k=0; k<=5; k++){
printf("%d\n", array[i][j][1]);
}
}
}

return 0;
}

基本上,如果我有一定数量的集合和数字序列的输入。就像这样:

SET 1

1: 5,5,6,5
2: 3,4,5,5
3: 3,4,5,6

SET 2

1: 5,7,8,7
2: 5,5,5,6


finish

我想输出给定集合中每个序列的序列号以及冒号后所有数字的总和。所以它看起来像这样。

SET 1
1 21
2 17
3 18

SET 2
1 27
2 21

但是,当我尝试执行代码时,出现总线错误:10。我尝试调整数组大小,但现在无法迭代数组,因为它不断返回一堆随机数。喜欢:

-34618613832766
32766
32766
32766
32766
32766
1178023731825050672
825050672
825050672

这些数字是从哪里来的?谢谢。

最佳答案

您的数组对于堆栈来说很可能太大。请参阅编译器手册,了解如何增加堆栈大小或使用 malloc() 在自由存储(也称为“堆”)上动态分配堆栈大小。

关于c - 迭代 3D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52588176/

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