c - 迭代 3D 数组
问题描述
我不断在我的代码上收到此总线错误 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()
.
推荐阅读
- scala - 在 spark scala 中将时间戳列从 UTC 转换为 EST
- google-sheets - 带有 GoogleFinance 动态日期的 ArrayFormula
- excel - VBA 自动化(宏)在 IE 选项卡上运行不佳
- postgresql - 消除 Postgres 触发器上的字段值
- office365 - 如何在office.js中为excel插件添加对话框
- c++ - 编译 Gurobi 示例代码时出现链接器错误
- powerbi - PowerBi 是否有“选项卡控件”控件
- javascript - 如何仅对表格的某些行进行排序?
- php - PHP、cURL、SendinblueAPI:如何对文件体进行编码以导入 CSV 文件?
- c# - 如何获取包含任何给定单词的所有字符串?