2012-12-18 69 views
-1

你好我顯然是C新手,但我正在尋找一些關於我想要做的背後的邏輯的幫助或建議。 就是這樣,我要提出一系列問題,我想循環使用並逐個打印出問題。 問題在於,打印出一個問題後,程序或函數會等待,直到它回答「Y」或「N」,然後循環繼續。一旦所有問題都得到解答,結果將被打印出來並且程序結束。如何循環訪問數組(提示)並在繼續循環之前每次回答一個提示?

我只是需要一些關於這樣的背後邏輯的建議。也許在這種情況下使用循環是不可行的,我需要嘗試一些不同的東西,任何意見,表示讚賞!

+0

這個問題太含糊。你有什麼麻煩?打印問題?閱讀答案?存儲答案? – hugomg

+0

對不起,多多少少有麻煩包裝如何循環打印1問題等待答案,然後繼續和循環。 –

+1

如果你已經知道如何遍歷你的元素,你可以使用'char * gets(char * s)'來捕獲答案。 – Asblarf

回答

0

嗯,這裏是一個選項可能衆人中間有一個(你問C,因此,這裏的一些C代碼;在C++中,這本來可以做完全不同):

  1. 您需要定義一個結構來保存你的問題,也許是這樣的:

    #define QUESTION_SZ 128 /* adjust to your needs, or use dynamic memory allocation */ 
    #define ANSWER_SZ 128 /* ditto */ 
    struct question 
    { 
        char question_text[QUESTION_SZ]; 
        char answer[ANSWER_SZ]; 
    }; 
    
  2. 然後,您可以創建問題的數組,並初始化:

    struct question my_poll[32]; 
    
  3. 接下來,您可以遍歷您的問題陣列和處理它們:

    int i = 0; 
    char *p = NULL; 
    int oops_we_failed = 0; 
    for(i = 0; i < 32; i++) 
    { 
        printf("Question %d: %s. Your answer?\n", i, my_poll[i].question); 
    
        /* fgets() will block until user enters an answer */ 
        p = fgets(my_poll[i].answer, ANSWER_SZ, stdin); 
    
        if(NULL == p) 
        { 
         /* nothing was read, an error could have happened */ 
         oops_we_failed = 1; 
         break; 
        } 
        else 
        { 
         /* now we have a possible answer stored in poll[i].answer */ 
        } 
    } 
    
  4. 現在你有問題和相應答案的數組。

您可能需要研究鏈接列表來動態創建任意長度的民意調查。