我在编程方面很陌生,我正在尝试编写Hangman代码。我在与代码相同的文件夹中的文本文件中保存了10个单词,我希望程序随机选择一个单词并将该单词保存到字符数组中。
我用Google搜索并环顾四周,但我似乎无法弄明白该怎么做。我是否使用fopen()
和rand()
之类的内容?
答案 0 :(得分:1)
假设每行写一个单词,这里有一小段代码可以做到:
FILE* fp = NULL;
char words[20];
int i = 0 , ran = 0;
srand(time(NULL));
fp = fopen("path" , "r+");
for(; fgets(words , sizeof(words) , fp) ; i++)
;
ran = rand() % i;
rewind(fp);
for(i = 0 ; i < ran ; i++)
fgets(words , sizeof(words) , fp);
printf("%s\n" , words);
请注意文件末尾没有换行符,因为它会被视为一个单词,有时会被退回给你
答案 1 :(得分:0)
这取决于这些单词在文件中的保存方式。我的第一个想法是选择随机数,然后读取一个单词,该单词写在一个已选择数字的行中。但是你的话必须每行写一次。
答案 2 :(得分:-1)
您可以分三步完成:
从文件中读取所有单词char words[N][100]
(此处N = 10)。在C中,您可以按如下方式执行此操作:
char words[10][100];
int i = 0;
while(10>i && fgets( words[i++], 100, file) );
在i
内生成随机数[0,N-1]
。
int i = rand() % 10;
返回words[i][]
。