gpt4 book ai didi

c++ - 打开文件时遇到问题?

转载 作者:行者123 更新时间:2023-11-30 01:59:50 26 4
gpt4 key购买 nike

我不知道到底是什么问题。我收到一条错误消息说我需要初始化我的 char* 文件名,但是如果我将它初始化为 NULL 我也会收到另一个错误消息吗?

我的主要功能是这样的:

char * filename;
cout << "Enter the name of the graph file: ";
cin >> filename;
readgraph(filename, 1);

这里是 readgraph 函数:

最佳答案

问题在于指针只是指向 包含内存的空间。在您的代码中,filename 是(在这里挥手)指向字符数组的指针,但实际上您从未给它任何指向的东西。

你可以用一个特定的大小来初始化它:

char filename[50]; // An array that can hold 49 characters plus a NULL terminator

或动态尺寸:

size_t size = whatever_you_want;
char *filename = new char[whatever_you_want];
// make sure to delete[] filename when you're done

不过你应该知道,如果你试图在字符串中放入比分配给它更多的数据,它会导致一个巨大的安全漏洞,称为 buffer overflow。 ,这(如果你幸运的话)会导致你的程序崩溃。

或者您可以使用 string 以简单的方式做到这一点:

string filename;
cin >> filename;

这最后一种方法可能是最好的,因为你不需要像自己处理字符串大小那样担心缓冲区溢出错误,也不需要处理 delete在你完成后调用它,因为 string 会自动为你处理。

您始终可以使用 c_str() function 转换为 C 字符串 (char*) ,但我建议只使用它来向后兼容无法处理 string 参数的函数。

关于c++ - 打开文件时遇到问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15777829/

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