我有以下数据结构:
struct Domino{
int numb1;
int numb2;
bool used;
Domino* next;
};
我必须从具有以下结构的文件中读取元素:
3
1 2
2 2
4 1
第一个数字显示行数。 我写了以下函数:
Domino* read(char* filename, Domino* head){
std::ifstream file;
int first=0,line=0, numb, prev_numb, cnt=1;
file.open(filename, std::ios_base::in);
if(!file){
std::cout<<"File cant be opened"<<std::endl;
return 0;
}
while(file>>numb){
if(line==0){
line++;
}else{
if(cnt%2!=0){
prev_numb=numb;
cnt++;
}else{
Domino* stone=new DominoListe;
stone->numb1=prev_numb;
stone->numb2=numb;
stone->used=false;
if(head==NULL){
head=stone; //first element in the list
}else{
Domino* tmp=head;
while(tmp->next!=NULL){
tmp=tmp->next; //The End of the list is found
}
tmp->next=stone; // Append at the End
}
stone->next=NULL;
if(first==0){
head=stone;
first++;
}
cnt++;
}}}
file.close();
std::cout<<"File is read.\n"<<std::endl;
return head;
}
通话功能:
int main(int argc, char * argv[]) { // noch mit const!
Domino* head=NULL;
head=read(argv[1], head);
...
文件被读取但是列表没有按预期构建,头部在此函数运行之后仍为0.当我写简单时
file.open("filename");
一切正常,程序运行正常,每个指针都显示它应该显示的位置。
但是,我试图用
./ progname progname.cpp&#34; filename&#34;
并且没有引号,但结果相同 - 读取文件,head始终为0.
有人可以解释一下为什么会有这样的差异吗?
答案 0 :(得分:2)
该程序将读取progname.cpp
,因为它被指定为第一个参数,而progname.cpp
的第一行中的内容可能不是可以解释为数字的内容。
尝试删除额外参数并启动程序,如
./progname "filename"
另请注意,在使用之前应检查参数的数量。