gpt4 book ai didi

c++ - 在 for 循环中崩溃

转载 作者:行者123 更新时间:2023-11-30 00:56:20 29 4
gpt4 key购买 nike

我正在尝试写入一个文本文件。当我不使用我的 for 循环时我可以写得很好,但是当我实现它以将我的所有数组写入文件时它崩溃了。这是我的代码:

void writeFile(void)
{
char *fileName[30];
cout << "enter a filename";
cin >> *fileName;
ofstream myfile;
myfile.open (*fileName);
int p;

for(p = 0; p <= i; p++)
{
myfile << right << setw(4) << setfill('0') << packet[i].getSource() << ":";
myfile << right << setw(4) << setfill('0') << packet[i].getDest() << ":";
myfile << right << setw(4) << setfill('0') << packet[i].getType() << ":";
myfile << right << setw(4) << setfill('0') << packet[i].getPort() << endl;
}

有什么地方出错了吗?

最佳答案

fileName 是一个包含 30 个未初始化的 char 指针的数组。 *fileNamefilename[0] 相同,都是未初始化的指向char 的指针。您不能将此指针用于任何用途,只能为其分配一个有效值。但是,您并没有这样做,而是试图向它读取数据,这会带来可预见的灾难性后果。

简而言之,您根本不应该在 C++ 中使用任何指针,而是根据您的情况使用 std::string:

std::string fileName;
if (!(std::cin >> fileName)) { /* I/O error, die */ }
// ...

(也许您的意思是将 fileName 设为 30 个字符的数组:char fileName[30];。但不要那样做。即使它可能会起作用,这非常糟糕。)

关于c++ - 在 for 循环中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10474741/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com