gpt4 book ai didi

c++ - 在 C++ 中的外部文件中存储结构数组

转载 作者:太空宇宙 更新时间:2023-11-04 11:38:59 25 4
gpt4 key购买 nike

所以我正在为我的 CS162 类(class)布置家庭作业,这要求我制作一个程序,允许用户输入他们的大学类(class)计划。用户输入他们已经参加、正在参加和/或计划参加的类(class),类别包括:部门/类(class)编号、类(class)名称、学期/年份、该类(class)是否是他们的专业所必需的,以及任何其他评论。然后,该程序应该将此信息与外部数据文件一起存储,以便存储这些类并且不会丢失。该程序应该能够在内存中存储多达 60 个类。

我知道如何创建结构数组,我知道外部文件背后的基础知识,但我想我在将两者结合起来时遇到了麻烦(我是这里的新手,如果这真的很基础,我很抱歉!)

这是我目前所拥有的:

struct college_class
{
char dept_classnumber;
char class_name;
char term_year;
char is_required;
char comments;
char grade;
}

college_class[60]

int main()
{
int n;
char again;
for(n=0;n<60;n++)
{
do
{
cout<<"Enter department and class number (e.g. CS162): ";
getline (cin,college_class[n].dept_classnumber);
cout<<"Enter class name (e.g. Intro to Computer Science): ";
getline (cin,college_class[n].class_name);
cout<<"Enter the term and year the class was/will be taken: ";
getline (cin, college_class[n],term_year;
cout<<"Enter whether or not this class is required for your major: ";
getline (cin,college_class[n],is_required);
cout<<"Enter any additional comments here: ";
getline (cin, college_class[n],comments);
cout<<"Would you like to enter another class?(y/n)";
cin>>again;
}
while(again == 'y' || again == 'Y' && i<60)
}

就获取用户输入而言,这是正确的方向吗?我的另一个问题是,如何将外部文件合并到其中,以便用户输入的所有内容都存储到文件中?抱歉,如果这有点含糊,我显然不是在寻找为我完成的作业 - 我只是在寻找开始的小方向。

我知道在文本文件上写是这样的,例如:

ofstream my file ("example");
if(myfile.is_open()))
{
myfile <<"blah blah blah. \n";
myfile.close();
}

...我只是不确定如何使它适用于结构数组。

最佳答案

您的代码有很多问题。首先,您必须为 college_class 数组创建一个变量。例如:

college_class myCollegeClass[60]

并在询问输入时使用它

getline (cin, myCollegeClass[n].term_year;)

你不小心在某些行中使用了逗号,当心

此外,一个 char 只能容纳一个字符,如果你想容纳完整的类名,在你的结构中使用字符串,这将是不够的。

struct college_class
{
string class_name;
...
}

你在那里使用了一个嵌套循环,它会重复你的问题 60 次,不管你是否说你不想输入任何其他内容。

我建议

int i=0;
char again = 'y';
while(again != 'n' && again != 'N' && i<60)
{
...
i++
}

至于文件,在您获得输入后,只需遍历 myCollegeClass 数组并将数据写入文件即可。例如:

myfile << myCollegeClass[i].class_name;

关于c++ - 在 C++ 中的外部文件中存储结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22195131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com