2015-01-09 123 views
-2

我想要一個代碼來讀取包含某個問題的文本文件,然後隨機選擇一個問題並顯示給用戶,直到所有問題顯示爲止;閱讀文本文件並隨機顯示文本行

例如問題:

你幾歲了?

你從哪裏來?

現在,這是我的代碼,但我不知道繼續。

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; 
} 

我該如何繼續?

回答

0

我想將啓動文件讀入連續的內存塊中,然後對文件中的行數(內存中)進行計數,然後製作一個指針數組 - 指向每一行的一個指針並更改所有的'\n' s到''\ 0`s。

最後,我會從隨機順序中選擇指針(使用基本的shuffle算法),並顯示指向用戶的問題。

如果問題列表太大而不適合內存,用戶可能會在回答所有問題之前入睡,我假設這不會發生。