Я пытаюсь прочитать некоторые строки из файла и скопировать их в массив строк. Я не могу понять, почему мне удается правильно прочитать только первую строку в файле, прежде чем получить ошибку сегментации. Я знаю, что каждая строка в файле имеет до 50 символов.Чтение строк из файла и их копирование в массиве - C
...
int i = 0;
char s[50];
int N=0;
FILE *fp;
//Figures out how many strings are stored in the file
while(fgets(s, 50, fp)!=NULL){N++}
rewind(fp);
char *strings[N]; //This is the array where I want to store strings
for(i=0;i<N;i++){
fgets(s, 50, fp);
strcpy(strings[i], s);
printf("%s", s);
}
Почему я не могу успешно хранить строки в массиве?
Вы не можете использовать 'strcpy' с неинициализированным указателем, используйте' strdup': 'stringings [i] = strdup (s) ; ' –
Подсказка:' char * string [N] '- массив из N указателей, но ни один из них не был инициализирован. Каждый из указателей указывает на некоторое неопределенное расположение памяти. –
@MichaelWalz: Большое спасибо! Поэтому я могу использовать strcpy, но мне нужно инициализировать каждый указатель 'strings [i]'. Считаете ли вы, что после fgets() я должен использовать что-то вроде: 'stringings [i] = (char *) malloc (50 * sizeof (char));'? – davideAlbertini