Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 读取文本文件并随机显示文本行_C_File Io - Fatal编程技术网

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

C 读取文本文件并随机显示文本行,c,file-io,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("

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

例如,问题:

你多大了

你是哪里人

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

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;
}
intmain()
{
int i=0,line=5;
char-ch[1000];
char*str;
时间;
srand((未签名)时间(&t));
文件*myfile;
myfile=fopen(“question.txt”、“r”);
if(myfile==NULL)
{
printf(“无法打开文件\n”);
返回1;
}
while(fgets(ch,1000,myfile)!=NULL)
printf(“%s”,ch);
fclose(myfile);
直线=5;
整数计数器;
对于(i=0;i

如何继续?

我将enitire文件读入一个连续的内存块,然后计算文件(内存中)的行数,然后制作一个指针数组-每行一个指针,并将所有
'\n'
更改为'\0''s

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

如果问题列表太大,无法存储在内存中,那么用户可能会在回答所有问题之前睡着,所以我假设不会发生这种情况