我是编程的初学者,所以我只知道一些“基本”代码和方法来做事情,所以在写答案时,请记住我可能需要比人们在这个网站上通常需要的更多解释。谢谢!
我做了一个家庭作业来做一个基于文本的冒险游戏。 我必须将文件中的文本读入要使用的程序中。
起初我以为我会在一行写“问题”, 在该行之后的下三行将是具有3个“选择选项”的行。
使用这种方法,我将不得不创建4个字符串数组(问题,ans1,ans2和ans3),然后每隔4行读取这些字符串中的每一个(从不同的c行开始。)。
我希望你们明白我想在这里做些什么。但问题是,这可能吗?
如果是,那怎么样?
目前我有这段代码,但如果我把它放在一个循环中(对于/ while / etc。),这会将每一行都读入字符串中,但这并不好,因为我只需要将每4行放到一个数组中字符串。 告诉程序,只能从文件中读取每4行吗?
我目前的代码是:
char questions[40][200];
FILE* fp;
fp=fopen("text.txt", "r");
int i;
for (i=0; i<=3; i++)
{
fgets(questions[i], 200, fp);
}
fclose(fp);
这会使前4行进入字符串,这是不好的。在这种情况下,我想在我的字符串中的前4个问题。我应该如何更改代码才能实现这一目标?
答案 0 :(得分:4)
一种方法是读取循环中的所有行。为每个问题选项创建其他数组(例如,用于保存所有&#34; A&#34;答案的数组),然后以隔行格式读取所有数组:
char questions[40][200];
char answersA[40][200];
char answersB[40][200];
char answersC[40][200];
/* ... */
for (i=0; i<=3 /* Or however many questions there are */; i++)
{
fgets(questions[i], 200, fp); /* Read the question */
/* Read the answers */
fgets(answersA[i], 200, fp); /* Read the answer for option A */
fgets(answersB[i], 200, fp); /* Read the answer for option B */
fgets(answersC[i], 200, fp); /* Read the answer for option C */
}
/* ... */
加成
然后,如果您想获得特定问题i
的三个答案选项,只需获取answersA[i]
,answersB[i]
和answersC[i]
。
答案 1 :(得分:1)
另一种方法是使用结构将所有属于一起的东西汇集在一起,即问题和答案:
personArray