C++ 获得一个额外的";0“;后for循环

C++ 获得一个额外的";0“;后for循环,c++,C++,我目前正在做一个基于结构和数组的程序,虽然我了解其中的大部分内容,但最近遇到了一个我无法解决的问题。在代码中的某一点上,我在for循环中执行for循环,以显示一系列四个数字,但是在显示这四个数字的末尾,下一行以0开头,然后是我的其余数据 我将指出我所说的部分。 我使用一个名为“Student Data.txt”的文本文档,它的内容是 艾米·亚当斯 10111 97867895 本·巴尔 20222 89 81 73 87 卡拉卡尔 30333 79716377 唐·戴维斯 40444 69625

我目前正在做一个基于结构和数组的程序,虽然我了解其中的大部分内容,但最近遇到了一个我无法解决的问题。在代码中的某一点上,我在for循环中执行for循环,以显示一系列四个数字,但是在显示这四个数字的末尾,下一行以0开头,然后是我的其余数据

我将指出我所说的部分。 我使用一个名为“Student Data.txt”的文本文档,它的内容是

艾米·亚当斯
10111
97867895
本·巴尔
20222
89 81 73 87
卡拉卡尔
30333
79716377
唐·戴维斯
40444
69625867
埃德娜·伊顿
50555
63516248

我的输出是

艾米·亚当斯
10111
97867895
0Ben Barr
20222
89 81 73 87
0卡拉卡尔
30333
79716377
0Don Davis
40444
69625867
0Edna Eaton
50555
63516248
0按任意键继续

标题.h

//库
使用名称空间std;
#包括
#包括
#包括
#包括
#包括
//进口
ifstream infle(“Student Data.txt”);
//声明和结构
常数int gSIZE=4;
常数int-sSIZE=5;
结构gRec{
字符串名;
国际学生会;
国际等级[gSIZE];
int avgscore;
煤焦等级;
}学生[sSIZE];
int打印记录(gRec记录);
main.cpp

#包括“Header.h”
int main()
{
for(int k=0;k!=5;k++)
{
字符串str;
getline(infle,students[k].name);
infle>>学生[k].studID;
对于(inti=0;i!=4;i++)>学生[k]。成绩[i];
}
getline(infle,str);
不能更换线路:

cout << printrecord(students[k]);
第一个输出函数返回的值,在您的情况下为0

事实上,打印函数实际上不需要返回值,所以您可能应该将其签名更改为

void printrecord(gRec record)

并在末尾删除返回语句。

在考虑这个问题之前,您是否考虑过用一个像样的调试器来遍历代码?我们要求您应该这样做来询问有效的问题(倾倒代码是不够的)。。抱歉,当涉及到计算机和编码时,我是新来的;没有太多的调试经验或诸如此类的经验,但我将在未来尝试做更多的研究。“我将在未来尝试做更多的研究。”如果你真的想在未来对该网站做出贡献或从中获得结果,你真的应该这样做(回答/询问)。同时,该网站的问答禁令自动检测非常严格。你甚至应该尝试改进这个实际问题,以避免更多的向下/接近投票,这将导致禁止你参与。我不能做更多的改进这个问题,我包括了我目前所有的编码,其中大部分可能是用prett编写的很糟糕。我当时认为删除这个可能是最好的做法,因为它似乎给人们带来了很大的伤害,但它不会让我这么做。我以后将不再使用这个网站,很抱歉激怒你。你并没有真的激怒我(这听起来很不一样)。我只是想教你如何使用这个网站,以及你如何继续使用它。有一些方法可以改进你的问题(我知道你不能删除它,不,这不是最合适的行动).一定要通读全文,找到可能的方法来改进你的问题。哇,这不仅解决了主要问题,还解决了其他几个问题,谢谢你。
cout << printrecord(students[k]);
printrecord(students[k]);
void printrecord(gRec record)