我已经搜索了整个网络上的大多数 fopen 问题,但无济于事。我正在尝试用 fopen 打开一个文件。以下是我的部分代码:
FILE *filep = NULL;
FILE *Compilation = NULL;
printf("%s\n", fname);
char *pfname = (char*)malloc(sizeof(path) + sizeof(fname));
pfname = concat(path, fname);
printf("%s\n", pfname);
filep = fopen(pfname,"r");
if (filep == NULL){
printf("opening file failed: %s\n", strerror(errno));
}
printf("%p\n", filep);
我使用 Visual Studio express 2012 作为我的 IDE。当我在没有调试的情况下运行它时。它在打印连接的pfname后崩溃。但是,当我在调试模式下运行它时,它可以工作。filep不返回 NULL,它会打印内存地址。在 printf 之后我有另一个 fopen 并且在调试模式下它也可以工作。谁能帮我理解发生了什么?文件在那里,权限是正确的。这是代码的较新版本,但之前在一些未跟踪的更改之前,fopen 工作。提前致谢。
修改后的代码
FILE *filep = NULL;
FILE *Compilation = NULL;
printf("%s\n", fname);
char *pfname = (char*)malloc(strlen(path) + strlen(fname) + 1);
pfname = concat(path, fname);
printf("%s\n", pfname);
filep = fopen(pfname,"r");
if (filep == NULL){
printf("opening file failed: %s\n", strerror(errno));
}
printf("%p\n", filep);
char *newfile = (char*)malloc(strlen(path) + 11);
newfile = concat(path, "Result.txt");
Compilation = fopen(newfile, "a");
它仍然无法通过 fopen,因为它不打印指针。