读取文本文件并随机显示文本行

时间:2015-01-09 10:43:07

标签: c file-io

我想要一个代码来读取包含一些问题的文本文件,然后随机选择一个问题并显示给用户,直到所有问题都显示出来;

例如问题:

你多大了?

你是哪里人?

现在,这是我的代码,但我不知道继续。

int main()
{
   int i = 0, line = 5;
   char ch[1000];
   char *str;
   time_t t;

    srand((unsigned) time(&t));

    FILE *myfile;
    myfile = fopen("question.txt","r");
    if (myfile== NULL)
    {
    printf("can not open file \n");
    return 1;
    }

    while (fgets(ch,1000, myfile)!=NULL)
        printf("%s",ch);

    fclose(myfile);
    line = 5;
    int counter;

    for( i = 0 ; i < line ; i++ ) {
        counter = rand() % 6;
      printf("first question: %s\n", ch[counter]);
    }


    return 0;
}

我该如何继续?

1 个答案:

答案 0 :(得分:0)

我将enitire文件读入一个连续的内存块,然后计算文件中的行数(在内存中),然后创建一个指针数组 - 指向每一行的一个指针并更改所有{ {1}}到'&#39; \ 0``s。

最后,我以随机顺序从数组中选择指针(使用基本的混洗算法)并显示指向用户的问题。

如果问题列表太大而无法记忆,那么用户可能会在回答这些问题之前入睡,所以我假设不会发生。