2013-09-30 3 views
0

Получение ошибки сегментации на strtok, у меня есть моя строка ввода lyne, определяемая как char, а не указатель, но, похоже, не работает. это в C и Linuxstrtok get segmentation error read file

typedef struct 
    { 
    int x; 
    char *y; 
    } child; 

    typedef struct{ 
    child *details; 
    } parent; 


     fp = fopen(filename,"r"); // read mode 
     char lyne[25]; 
     char *item; 
    fgets(lyne,25,fp); 

    parent record; 
     record.details= malloc (5 * sizeof(child));  

     while (fgets(lyne,25,fp)) { 

      printf("test %s \n",lyne); 

      item = strtok(lyne," ");  

strcpy(record.details->y,item);//seg error on this line 
     } 
     fclose(fp); 


my file looks like this 
file#1 
ABC 100 
BCE 200 


OUTPUT: 
test ABC 100 

Segmentation fault 
+0

@jxh: Как вы думаете, что делает вызов 'printf', если не производить продукцию? –

+1

[Работает для меня] (http://ideone.com/COSpAv). Проблема должна быть в другом месте, в коде, который вы не указали. –

+0

@jxh: Это именно то, что показывает OP. Строка «file # 1» пропущена; вывод начинается со второй строки. –

ответ

0

Вы не выделили память на дочернем элемент структуры «у» в вашей структуре является

typedef struct 
    { 
    int x; 
    char *y; 
    } child; 

Что вам нужно сделать:

record.details->y = malloc(sizeof(char)*(strlen(item) + 1)); 
strcpy(record.details->y,item); 
0

бы добавить parent.deatils->y = (char *) malloc(24); перед использованием