测验问题从文本文件到c中的数组

时间:2013-05-09 01:21:50

标签: c arrays netbeans struct int

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

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

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

换句话说,format是string; string; string; string; int

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

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

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

非常感谢任何帮助。是的,这是一个最终项目,但现在讲座已经结束,我们的老师不会在课余时间之外为学生提供帮助。

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

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

3 个答案:

答案 0 :(得分:1)

因为这是一个课程,我不知道你的导师是否要你使用低技术方法,但我会使用像sscanf这样的问题来解决这个问题。你可以这样做:

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

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

答案 1 :(得分:1)

由于这是一个课程项目,我将只提供一般指导。我建议您查看strtok函数,使用文本文件中的行作为字符串和“;”作为代币。示例和文档可用here。重复调用此功能可以将您的行划分为多个段。

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

  1. 包含问题的字符串(char *)。
  2. 包含选项的字符串数组。
  3. 定义选项数量的int(即2中数组的长度)。您可以在示例中将其硬编码为3。
  4. 定义正确答案的int。
  5. 您可以为文本文件中的每一行创建结构实例。

答案 2 :(得分:0)

你需要的可能是一个标记器。 您可以查看此处的讨论Using strtok in c。列出了一些代码片段,在我看来,对您的案例非常有帮助。