打开要写入与程序在同一目录中的文件,但是找不到文件

时间:2017-06-02 18:47:41

标签: c file pointers null

我正在尝试写入文件,但是,文件指针总是指向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;
  }

2 个答案:

答案 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;
}