Я прочитал много документации по этому вопросу, но у меня все еще есть некоторые проблемы по этому поводу, я знаю, что такое указатель, но когда я пытаюсь использовать, я сталкиваюсь с какой-то проблемой, в приведенном ниже коде txt-файл включает в себя только одно слово на каждый line.I попытался прочитать случайную строку из текста и вернуться к основной функции после того, как мне понадобится это). И я распечатаю его в основной функции, пожалуйста, можете ли вы помочь мне, какой раздел я должен изменить в этом коде? (Когда я пытаюсь запустить это сообщение об ошибке Сегментация сбой (ядро сброшено))
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
char word(char *file, char str[], int i);
int main() {
char buf[512];
char j = word("words.txt", buf, 512);
puts(j); // print random num
}
char word(char *file, char str[], int i) {
int end, loop, line;
FILE *fd = fopen(file, "r");
if (fd == NULL) {
printf("Failed to open file\n");
return -1;
}
srand(time(NULL));
line = rand() % 100 + 1; // take random num
for (end = loop = 0; loop < line; ++loop) {
if (0 == fgets(str, sizeof(str), fd)) { // assign text within a random line to STR
end = 1;
break;
}
}
if (!end)
return (char*)str; // return the str pointer
fclose(fd);
}