2015-01-09 2 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

나는 enitire 파일을 연속 된 메모리 블록으로 읽은 다음 메모리에있는 파일의 행 수를 계산 한 다음 포인터의 배열을 만드십시오. 각 행에 포인터 하나씩 모두 '\n'을 변경하십시오. ``\ 0``으로 변환합니다.

마지막으로 배열에서 임의의 순서 (기본 셔플 알고리즘 사용)의 포인터를 선택하고 사용자에게 가리키는 질문을 표시합니다.

질문 목록이 너무 커서 메모리에 저장되지 않으면 사용자가 모두 대답하기 전에 잠들 것입니다. 그렇게하지 않는다고 가정합니다.

관련 문제