1

我正在尝试将下面的行放入 c 中的数组中。这是一个测验程序,它以随机顺序询问 10 个问题(可能有 15 个问题)并跟踪分数并在最后告诉用户他们是如何做的。

这是我的文本文件中一行的格式示例:

什么不是加拿大的官方语言;英语;法语;西班牙语;3

换句话说,格式是字符串;字符串;字符串;字符串;整数

或者

问题;选项-a;选项-b;选项-c;正确答案

我知道如何在 C 中逐行读取文件,但我不知道如何使用这些;将一行分成多行。此外,在用户选择他们的选择作为 int 并按 Enter 后,不确定如何为该测验保留分数。

显然,我应该定义一个结构来提出这些问题......

任何帮助将不胜感激。是的,这是一个期末项目,但现在讲座已经结束,我们的老师不会在课余时间为学生提供任何帮助。

这是我到目前为止所做的:

http://i.stack.imgur.com/E8LtH.png

4

3 回答 3

1

由于这是一个班级项目,我将只提供一般指导。我建议您查看该strtok函数,使用文本文件中的行作为字符串和“;” 作为令牌。示例和文档可在此处获得。重复调用此函数将允许您将您的线路划分为段。

至于结构要求,一个明智的方法是使用这些成员创建一个结构:

  1. 包含问题的字符串 (char*)。
  2. 包含选项的字符串数组。
  3. 定义选择数量的 int(即 2 中数组的长度)。在您的示例中,您可能可以将其硬编码为 3。
  4. 定义正确答案的 int。

您将为文本文件中的每一行创建一个结构实例。

于 2013-05-09T01:37:48.333 回答
1

由于这是针对课程的,我不知道您的讲师是否希望您使用低技术含量的方法,但我会使用 sscanf 之类的方法来解决此类问题。你可以这样做:

int number;
char fruit[16];
char line[]="I ate 3 bananas.";
sscanf(line, "I ate %d %s.", &number, fruit);

它会相应地更新您在 sscanf 函数中指向的变量。

于 2013-05-09T01:28:48.140 回答
0

你需要的可能是一个分词器。您可能想看看这里的讨论Using strtok in c。列出了一些代码片段,我认为这对您的情况非常有帮助。

于 2013-05-09T01:38:10.713 回答