如何循环一个数组(提示)并在继续循环之前一次回答每个提示?

时间:2012-12-18 00:54:24

标签: c loops logic

您好我很明显是C的新手,但我正在寻找一些关于我想要做的事情背后的逻辑的帮助或建议。 就是这样,我将提出一系列问题,我想循环遍历它并一次打印出一个问题。 问题是,在打印出一个问题之后,程序或功能等待直到用“Y”或“N”回答,然后循环继续。一旦所有问题都得到解答,结果就会被打印出来并且程序结束。

我只需要对这样的事情背后的逻辑提出一些建议。也许在这种情况下使用循环是不可行的,我需要尝试不同的东西,任何建议表示赞赏!

1 个答案:

答案 0 :(得分: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. 现在您有一系列问题和相应的答案。

  5. 您可能需要研究链接列表以动态创建任意长度的民意调查。