C++ 无法从文件中读取输入

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");

我无法从文件中读取输入。每次我的代码到达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");
    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]