您好,我显然是 C 的新手,但我正在寻找有关我想做的事情背后的逻辑的帮助或建议。也就是说,我将提出一系列问题,并且我想遍历它并一次打印出一个问题。问题是,在打印出一个问题后,程序或函数会等待,直到它被回答为“Y”或“N”,然后循环继续。回答完所有问题后,打印结果并结束程序。
我只需要一些关于这种事情背后的逻辑的建议。也许在这种情况下使用循环是不可行的,我需要尝试一些不同的东西,感谢任何建议!
好吧,这是众多可能的选项之一(您要求使用 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 */
}
}
现在您有一系列问题和相应的答案。
您可能需要研究链表以动态创建任意长度的轮询。