C++ 无法从文件中读取输入
我无法从文件中读取输入。每次我的代码到达strncpy时,我的代码都会中断,我无法找出原因。代码似乎在set name函数处中断C++ 无法从文件中读取输入,c++,fstream,C++,Fstream,我无法从文件中读取输入。每次我的代码到达strncpy时,我的代码都会中断,我无法找出原因。代码似乎在set name函数处中断 fstream& AmaProduct::load(std::fstream& file){ char s[7]; char* n; n = new char[7]; double p; bool t; int q; int nn; file.open("amaPrd.txt");
fstream& AmaProduct::load(std::fstream& file){
char s[7];
char* n;
n = new char[7];
double p;
bool t;
int q;
int nn;
file.open("amaPrd.txt");
if (file.is_open()){
file.ignore(2);
file.getline(s,',');
cout << s;
sku(s);
file.ignore();
file.getline(n,',');
name(n);
file.ignore();
file >> p;
price(p);
file.ignore();
file >> t;
taxed(t);
file.ignore();
file >> q;
file.ignore();
quantity(q);
file.getline(unit_, ',');
file.ignore();
file >> nn;
qtyNeeded(nn);
}
file.close();
return file;
}
正在申报的sku
char sku_[8]
我已经为此工作了几个小时,但还没有找到解决办法 对不起,我之前的回答显然不正确 分段错误表示程序试图访问不属于它的内存位置。换句话说,您正在写入或读取尚未正确初始化或超出范围的指针,以及一些其他不太可能出现的选项 您写道它在strncpy崩溃,它唯一的引用是在sku函数中。您没有set name函数,但name函数中有strcpy调用。注意strncpy和strcpy之间的区别 您的函数产品::sku。。使用strncpy复制到sku_uuu,但不清楚您在何处声明它,以及它是否在范围内,还是在Product::sku.时已初始化。。跑。主函数位于产品名称空间或类中,而其他函数位于产品名称空间或类中。那是故意的吗?sku_uu在哪个命名空间中声明 Product::namechar*name函数调用strcpy,它假定name是以零结尾的字符串。您确定它是以零结尾的吗?否则,它将继续写入并抛出segfault。为file.getline添加最大读取字符数可能也是明智的。最大数量应与目标缓冲区的大小相对应 此外,将函数命名为变量也是不明智的。使用清晰而有意义的名称可以更容易地查看和调试代码的逻辑
最后,请参阅以获取有关调试的更多帮助。您的代码是否可能会出现特定的错误消息?不,它所说的只是分段错误,您有该文件。getlinen,',';是一个错误,您应该使用file.getlinen,7',';在你的代码中。请阅读用户给你的答案。
char sku_[8]