我正在尝试编写一个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等。
但是在这种情况下,我遇到了一些错误,例如:
访问冲突位置错误(我在文件名中发现此错误)
变量“ c”被使用而未初始化。
如果有人可以帮助,那将是很大的帮助。
最佳答案
strcat((char *)foldername, "L1_matrix");
strcat
接受一个in-out参数,该参数指向一个缓冲区,该缓冲区包含一个以0结尾的字符串,并且足以存储结果,并具有一个指向字符串的指针。您给它
foldername
并通过强制转换确保它实际上指向可修改的缓冲区。别说谎
同样,您的第二个错误,但强制转换更严重:
fgets((char *)c,512,fp)
这将读取未初始化的变量
c
,从而发出“未初始化”警告,即UB。接下来,您将其强制转换为
char*
,但请不要担心:在现代台式机上,在char
范围内转换为指针的整数内进行写入或读取将发生段错误。