【发布时间】:2016-07-12 11:27:27
【问题描述】:
我很确定这段代码给了我一个无限循环,(我已经离开了很长时间,但什么也没发生),我已经主演了 2 天了,但我没有不知道为什么它一直在循环。有什么想法吗?
int r = 0;
int H = 0;
int g = 0;
while (r < (3265920)) {
while (g < 79338) {
//printf("middle");
if (!strcmp(arr1[g], Arr2[r])) {
strcpy(out[H], arr1[g]);
H++;
}
g++;
}
r++;
g = 0;
}
Q=0;
while (Q < 79338) {
printf("%d: %s\n",Q, Ans[Q]);
Q++;
}
所有数组在主数组之外都有正确的内存分配。
static char arr2[NINE_FACT * 9][10];
char Ans[79339][10];
char arr1[79339][45];
【问题讨论】:
-
正确缩进。并使用不言自明的名称。你有 3 个循环。你是指哪一个?调试说明了什么?你试过自己找出什么(除了盯着它看)。
-
@J.doo 这个神奇的数字 3265920 是什么意思,为什么要在数组之外使用索引?
-
@J.doo arr2 和 Arr2 是什么?
-
简历为“不清楚”。充满魔幻数字和缺失的声明:(
-
从技术上讲,您的代码可以在仅支持 16 位
int(C 标准允许的最小大小)的机器上无限循环。但是,有符号整数的溢出无论如何都是未定义的。
标签: c multidimensional-array infinite-loop strcmp strcpy