Я пытаюсь создать динамически выделенный массив с динамически выделенными строковыми элементами, используя getline()
.Динамически выделенный массив с динамически выделенными строковыми элементами, используя getline()
Это мой код,
char** getWordlist()
{
FILE* fp = fopen("Wordlist", "r");
if(errno == ENOENT)
fp = fopen("Wordlist", "w+r");
if(!fp) {
perror("Could not open wordlist");
exit(EXIT_FAILURE);
}
int c, fileLines = 0;
do{
c = fgetc(fp);
if(c == '\n')
fileLines++;
} while(c != EOF);
rewind(fp);
char** wordlist = calloc(fileLines, sizeof(char*));
for(c = 0; c < fileLines; c++)
getline(&wordlist[c], 0, fp);
printf("%s", (wordlist[0]));
fclose(fp);
return wordlist;
}
Однако printf
печатает выходы (null)
, поэтому строки никогда не была создана, я думаю.
Что я делаю неправильно?
Где ваш 'INT главный (...)'? – ryyker
Почему '3' в' printf ("% s", (wordlist [3])); '? – chux
Метод, используемый для определения 'fileLines', будет 1 коротким, если' Wordlist' не заканчивается '' \ n''. – chux