如何将字符串的一部分复制到struct数组的元素?

时间:2012-03-07 12:10:30

标签: c arrays string segmentation-fault structure

我遇到了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;
}

它编译但它确实存在分段错误,我不知道它有什么问题 请帮忙

2 个答案:

答案 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或更多来增加堆栈限制。