我遇到了struct数组的问题。 我正在尝试将字符串的一部分复制到struct数组的元素中。 (对不起,如果听起来不那么清楚)
这是我的代码
#include <stdio.h>
#include <string.h>
struct dict {
char key[1024];
char value[16384];
int level;
};
int main()
{
struct dict entry[2562];
char str[]="i will finish my mp";
int j=0;
int i = 0;
char temp[1024];
char a =0;
while(a != 'h' ){
a = str[i];
temp[i] = str[i];
i++;
}
strcpy(entry[0].value,str);
puts(entry[0].value);
return 0;
}
它编译但它确实存在分段错误,我不知道它有什么问题 请帮忙
答案 0 :(得分:3)
while(a != 't' )
这是无限循环
char a = 0xff;
while(a != '\0'){...}
添加强>
此任务for
更清晰
int cnt = srtlen(str);
for(int i = 0; i < cnt; i++)
temp[i] = str[i];
答案 1 :(得分:3)
代码中出现分段错误的一种可能性是堆栈溢出。
您的结构的每个变量大小约为17KB,并且您创建了2562个这样的变量,这意味着需要分配总共大约43554KB的42MB。
您可以通过从shell中执行ulimit -s
来检查最大堆栈大小的限制,如果它小于43554,则命中stackoverflow。
如果是这种情况,您可以尝试通过ulimit -s 43554
或更多来增加堆栈限制。