我正在编写一个程序,允许用户输入要读取的人员数据库的文件名; 然后,程序在每个状态链接中创建状态对象的链接列表和人员对象的链接列表,以组织文件中的信息.
我知道链表部分有效,因为我能够直接在文件名中编码并打印出状态列表和每个州的人员列表; 但是,当我尝试允许用户输入文件名作为命令时,我收到一个总线错误.当我在gdb中运行代码时,它告诉我的是:
Program received signal SIGBUS, Bus error.
0x280df0bd in std::operator>><char, std::char_traits<char> > ()
from /usr/lib/libstdc++.so.5
Run Code Online (Sandbox Code Playgroud)
我甚至没有得到一个行号!任何帮助将非常感激.这是我的代码的命令和读取部分:
List<State*>* read(char* filename) {
string fname, lname, birthday, state;
int ssn;
List<State*>* state_list = new List<State*>();
ifstream file(filename);
if (file.fail()) {
cerr << "Error reading file.\n";
exit(1);
}
while (!file.eof()) {
file >> birthday >> ssn >> fname >> lname >> state;
Link<State*>* searchres = searchList(state, state_list);
Person* p = new Person(fname, lname, ssn, birthday, state);
if (searchres == NULL) // …Run Code Online (Sandbox Code Playgroud)