我正在尝试写入文件,但是,文件指针总是指向NULL,就像文件不存在一样。该文件与输入文件位于同一目录中,该文件被找到并写入。关于为什么会发生这种情况的任何想法?
FILE *vmoutput = NULL;
fopen("vmoutput.txt", "w");
// if file could not be opened return error
if(vmoutput == NULL)
{
printf("FILE COULD NOT BE FOUND\n");
return 1;
}
答案 0 :(得分:3)
如何修复代码:
fopen
的返回值
#include <stdio.h>
#include <string.h>
#include <errno.h>
...
FILE *vmoutput = fopen("vmoutput.txt", "w");
if (vmoutput == NULL) {
fprintf(stderr, "Can't open %s: %s\n", "vmoutput.txt", strerror(errno));
return 1;
}
现在,您的代码始终将vmoutput
设置为NULL
。
答案 1 :(得分:2)
成功完成后,fopen()返回 一个 文件指针。否则,返回NULL并设置errno以指示 错误。
因此,您必须将fopen()
返回的值分配给您的变量。你也应该很好地缩进你的代码。
#include <stdio.h>
int main(){
FILE *vmoutput = NULL;
vmoutput =fopen("vmoutput.txt", "w");
// if file could not be opened return error
if(vmoutput == NULL)
{
perror("Unable to open file\n");
return 1;
}
return 0;
}