gpt4 book ai didi

c++ - 为什么我收到此错误 "access violation writing location"?

转载 作者:行者123 更新时间:2023-11-28 06:31:39 25 4
gpt4 key购买 nike

我正在尝试编写一个 C++ 程序来从文件中读取一些数据。我的代码是:

void read_file(const char *foldername) {
FILE *fp;
char c;
const char *filename;
filename=strcat((char *)foldername, "L1_matrix");
fp=fopen(filename, "w+");
if(fp)
while (fgets((char *)c,512,fp))
printf("%s", c);
}

int main() {
read_file("A:\\Project\\Root\\event_1\\");
getchar();
}

我想读取几个文件,如 L2_matrix 等。

但在这方面我遇到了几个错误,例如:

  1. 访问冲突位置错误(我在文件名中发现了这个错误)

  2. 正在使用变量“c”,但未进行初始化。

如果有人能提供帮助,那将是一个很大的帮助。

最佳答案

strcat((char *)foldername, "L1_matrix");

strcat 接受一个输入输出参数,该参数指向包含以 0 结尾的字符串且足够大以存储结果的缓冲区,以及一个指向字符串的指针。

你给它 foldername 并确保它实际上通过强制转换指向一个可修改的缓冲区。
不要说谎!

与您的第二个错误类似,但类型转换错误更严重:

fgets((char *)c,512,fp)

这会读取未初始化变量c,因此您的“未初始化”-警告,即 UB。
接下来,您强行将其转换为 char*,但不要担心:在现代桌面上,写入或读取 char 范围内的整数转换为指针会出现段错误.

关于c++ - 为什么我收到此错误 "access violation writing location"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27423271/

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