我正在尝试将下面的行转换成c中的数组。这是一个测验程序,它以随机顺序提出10个问题(可能有15个问题),并跟踪得分,最后告诉用户他们的表现。
下面是我的文本文件中一行格式的示例:
什么不是加拿大的官方语言;英语;法语;西班牙语;3
即格式为string;string;string;int
或
问题;选a, b, c,正确答案
我知道如何在C中逐行读取文件,但我不知道如何利用这些;把一条线分成多条线。此外,在用户选择他们的选择作为int并按enter键后,不确定如何保持这个测验的分数。
显然,我应该定义一个结构体来呈现这些问题…
任何帮助都将非常感激。是的,这是一个期末项目,但是现在课程结束了,我们的老师将不会在课外时间给学生提供任何帮助。
到目前为止我所做的是:
https://i.stack.imgur.com/E8LtH.png因为这是一门课,我不知道你的老师是否希望你使用低技术的方法,但我会使用像sscanf这样的东西来解决这样的问题。你可以这样做:
int number;
char fruit[16];
char line[]="I ate 3 bananas.";
sscanf(line, "I ate %d %s.", &number, fruit);
并相应地更新您在sscanf函数中指向的变量
由于这是一个类项目,我将只提供一般指导。我建议您查看strtok
函数,使用文本文件中的行作为字符串,并使用";"作为标记。示例和文档可以在这里找到。重复调用此函数将允许您将您的行划分为段。
- 包含问题的字符串(char*)。 一个包含选项的字符串数组。
- 一个定义选择数的int(即2中数组的长度)。你可以在你的示例中将其硬编码为3。
- 定义正确答案的整型。
您将为文本文件中的每一行创建一个结构体实例。
您需要的可能是一个标记器。您可能想看看这里的讨论,在c中使用strtok。列出了一些代码片段,在我看来,这对您的情况非常有帮助。