Программа читает файл, который содержит одно слово в каждой строке. После чтения случайного слова поместите случайное слово в указатель и верните указатель. В основной функции printf ("% s", fun c ("example.txt ", str)) он печатает другую строку при запуске программы. Я хочу сделать это в 2d массиве (20 * 20), как таблица, но я не представляю, как это сделать. Когда я печатаю функцию во внутренней l oop, это дает мне одно и то же слово на каждом шаге l oop.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
char *word(char *file, char *str);
int main() {
char *str ;
int i, j;
str = (char *)malloc(20);
srand(time(NULL));
char *puzzle[20][20];
for (i = 0; i < 20; i++) {
for (j = 0; j < 20; j++) {
puzzle[i][j] = word("words.txt", str);
}
}
for (i = 0; i < 20; i++) {
for (j = 0; j < 20; j++) {
printf("%s ", puzzle[i][j]);
}
printf("\n");
}
}
char *word(char *file, char *str) {
int end, loop, line;
FILE *fd = fopen(file, "r");
if (fd == NULL) {
printf("Failed to open file\n");
return (NULL);
}
srand(time(NULL));
line = rand() % 100 + 1;
for (end = loop = 0; loop < line; ++loop) {
if (0 == fgets(str, 20, fd)) {
end = 1;
break;
}
}
if (!end)
return (char *)str;
fclose(fd);
free(str);
}