Как скопировать часть строки в элемент массива struct? - PullRequest
0 голосов
/ 07 марта 2012

У меня проблемы с массивом структуры. Я пытаюсь скопировать часть строки в элемент массива структуры. (извините, если это звучит не так ясно)

вот мой код

#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 ]

3 голосов
/ 07 марта 2012

Одной из возможных ошибок сегментации в вашем коде является переполнение стека.

Каждая переменная вашей структуры будет иметь размер около 17 КБ, и вы создаете 2562 таких переменных, что означает, что в общей сложности необходимо выделить около 43554 КБ.который 42MB.

Предел максимального размера стека можно проверить, выполнив ulimit -s из оболочки, если значение стека меньше 43554.

В этом случае вы можете попытаться увеличитьограничение стека, выполнив ulimit -s 43554 или немного больше.

3 голосов
/ 07 марта 2012

while(a != 't' ) это бесконечный цикл

Вы имели в виду

char a = 0xff;
while(a != '\0'){...} 

ADD

для этой задачи for понятнее

int cnt = srtlen(str);
for(int i = 0; i < cnt; i++)
    temp[i] = str[i];
...