не все ли там, где должно быть, почему ошибка сегментации? - PullRequest
0 голосов
/ 23 декабря 2018

это небольшой фрагмент кода, который вызывает ошибку сегментации, и я не понимаю, почему ...

char *firstName[50];
char *lastName[50];

for (int counter = 0; counter < 10; counter ++) {           
        fscanf(config, "%s %s\n", firstName[counter], lastName[counter]);

не должен этот файл конфигурации scanf кода взять первую и вторую строку и сохранить ихотдельно в firstName [0,1,2 .. counter] и lastName [counter]?

1 Ответ

0 голосов
/ 23 декабря 2018

Здесь

char *firstName[50];

firstName - это массив из 50-символьного указателя , и если вы хотите сохранить что-либо в каждом из этих указателей на символы , вынужно выделить память для них.Например,

for (int counter = 0; counter < 10; counter ++) {
        firstName[counter] = malloc(SIZE_FIRST); /* memory allocated for firstName[counter], now you can store into it */ 
        lastName[counter] = malloc(SIZE_LAST);           
        fscanf(config, "%s %s\n", firstName[counter], lastName[counter]);
}

После обработки firstName и lastName освободите динамически выделенную память, чтобы избежать утечки памяти.

...