从C中的文本文件中随机选择一个单词

时间:2013-12-25 14:32:14

标签: c file text

我在编程方面很陌生,我正在尝试编写Hangman代码。我在与代码相同的文件夹中的文本文件中保存了10个单词,我希望程序随机选择一个单词并将该单词保存到字符数组中。

我用Google搜索并环顾四周,但我似乎无法弄明白该怎么做。我是否使用fopen()rand()之类的内容?

3 个答案:

答案 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)

您可以分三步完成:

  1. 从文件中读取所有单词char words[N][100](此处N = 10)。在C中,您可以按如下方式执行此操作:

    char words[10][100];
    int i = 0;
    while(10>i && fgets( words[i++], 100, file) );
    
  2. i内生成随机数[0,N-1]

    int i = rand() % 10;
    
  3. 返回words[i][]