Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;简化版链表,当我加载数据创建链表,并输入更多数据时,似乎有一个缺口_C++ - Fatal编程技术网

C++ C++;简化版链表,当我加载数据创建链表,并输入更多数据时,似乎有一个缺口

C++ C++;简化版链表,当我加载数据创建链表,并输入更多数据时,似乎有一个缺口,c++,C++,我有一个read函数,它读取外部文件并使每个名称成为一个新节点,我想在我创建的列表上构建,但不知怎的,列表中有一个空白 example: I enter in dave, jack, dog, cat. result: name: dave name: jack name: dog name: cat 它会打印出来,这就是现在的清单。但是,如果我关闭程序,然后再次运行它,read函数将读回这些名称并再次创建链表。但如果我选择添加另一个名字“bob”。它会将其放在上面的下一个节点中 exam

我有一个read函数,它读取外部文件并使每个名称成为一个新节点,我想在我创建的列表上构建,但不知怎的,列表中有一个空白

example:
I enter in dave, jack, dog, cat. 

result:
name: dave
name: jack
name: dog
name: cat
它会打印出来,这就是现在的清单。但是,如果我关闭程序,然后再次运行它,read函数将读回这些名称并再次创建链表。但如果我选择添加另一个名字“bob”。它会将其放在上面的下一个节点中

example:
I enter in bob

result:
name: dave
name: jack
name: dog
name: cat
name: [BLANK LINE]
name: bob
6.cpp

#包括“6.h”
int main()
{
petAdoption采用;
字符响应;
采用。阅读();
做{
采用。注册();
采用.display();
cout>反应;
cin.忽略(100,“\n”);
}while(toupper(response)='Y');
}
petAdoption::petAdoption()
{
head=NULL;
}
void petAdoption::enroll()
{
字符温度[温度大小];
cout name=pet.name;
newNode->next=NULL;
if(NULL==头)
{
头=新节点;
当前=新节点;
}
其他的
{               
电流=水头;
while(当前->下一步!=NULL){
当前=当前->下一步;
}
下一步;
}
流式写入;
write.open(“pets.txt”,ios::app);
写下名字;
}
当前->下一步=新节点;
当前=当前->下一步;
}
}
}
read.close();
}
6.h

#包括
#包括
#包括
#包括
使用名称空间std;
const int TEMP_SIZE=250;
结构动物
{
字符*名称;
动物*下一步;
};
类掺杂
{
公众:
petAdoption();
//~petAdoption();
无效注册();
无效读取();
void display();
私人:
动物*头部,*当前,*新节点;
动物宠物;
};

不是在C++中编写读文件循环的方法。code>eof()仅在尝试读取文件末尾之后返回true,因此执行循环体的次数过多

写入循环的正确方法如下所示:

for (;;)
{
    read.getline(temp, TEMP_SIZE);
    if (read.failed())
        break;
    ...
}
或者更习惯地说:

while (read.getline(temp, TEMP_SIZE))
{
    ...
}
意思完全一样

还要注意,我使用了
failed()
而不是
eof()
——文件结尾不是读取失败的唯一原因

while(!read.eof())
{
    read.getline(temp, TEMP_SIZE);
    ...
}
for (;;)
{
    read.getline(temp, TEMP_SIZE);
    if (read.failed())
        break;
    ...
}
while (read.getline(temp, TEMP_SIZE))
{
    ...
}