您好我很明显是C的新手,但我正在寻找一些关于我想要做的事情背后的逻辑的帮助或建议。 就是这样,我将提出一系列问题,我想循环遍历它并一次打印出一个问题。 问题是,在打印出一个问题之后,程序或功能等待直到用“Y”或“N”回答,然后循环继续。一旦所有问题都得到解答,结果就会被打印出来并且程序结束。
我只需要对这样的事情背后的逻辑提出一些建议。也许在这种情况下使用循环是不可行的,我需要尝试不同的东西,任何建议表示赞赏!
答案 0 :(得分:0)
嗯,这是一个可能的众多选项之一(你要求C,所以,这里有一些C代码;在C ++中,这可能完全不同):
您需要定义一个结构来保存您的问题,可能是这样的:
#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];
};
然后,您可以创建一系列问题并对其进行初始化:
struct question my_poll[32];
接下来,您可以遍历一系列问题并处理它们:
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 */
}
}
现在您有一系列问题和相应的答案。
您可能需要研究链接列表以动态创建任意长度的民意调查。