C程序fprintf未生成输出

jk9hmnmh  于 2022-12-03  发布在  其他
关注(0)|答案(3)|浏览(323)

我写了下面的代码,在xcode和vscode上运行都没有错误。但是,我无法得到任何输出文件名. txt。它不在我的任何文件夹中。
如果有人能帮上忙,我会很感激的。

#include <stdio.h>
#include <string.h>

int main() {    

    FILE *fp=NULL;
    fp = fopen("filename.txt","w+");

    if (fp!= NULL){
    fprintf(fp,"%s %d","Hello",555);
    }

    fclose(fp);

    return 0;
}
8hhllhi2

8hhllhi21#

运行它没有错误
fclose(NULL)是未定义行为(UB),因此不清楚文件无法打开时是否没有错误。
在打开成功/失败的两种情况下打印一些内容-并带有'\n'。用于添加错误信息。
强大的代码检查所有I/O操作。

#include <stdio.h>
#include <string.h>

int main() {    
  const char *filename = "filename.txt";
  FILE *fp = fopen(filename,"w+");

  if (fp == NULL) {
    fprintf(stderr, "Unable to open <%s>\n", filename);
    perror("fopen()");
  } else { 
    printf("Success opening <%s>\n", filename);
    if (fprintf(fp,"%s %d","Hello", 555) < 0) {
      fprintf(stderr, "Print failure with <%s>\n", filename);
      perror("fprintf()");
    }
    if (fclose(fp) == EOF) {
      fprintf(stderr, "Failed to close <%s>\n", filename);
      perror("fclose()");
    }
  }

  return 0;
}

我也尝试过perror方法,它显示filename.txt:拒绝批准。稍后。
检查filename.txt是否为只读,是否正被其他应用程序(编辑器?)使用,或者是否存在其他权限限制。

jhiyze9q

jhiyze9q2#

如果文件没有成功打开,那么代码什么也不做(除了关闭一个空的FILE指针,这是未定义的)。你应该使用perror()来指示为什么它不能被打开:

const char *const filename = "filename.txt";
    FILE *const fp = fopen(filename, "w+");
    if (!fp) {
        perror(filename);
        return EXIT_FAILURE;
    }

    fprintf(fp, "%s %d", "Hello", 555);

很有可能您已经有一个不可写的filename.txt,或者您位于一个无法创建新文件的目录中,但是我们需要错误消息来确定它没有打开的原因。
或者,您运行的工作目录与您所认为的不同--这是您应该调查的问题(可能会向stderr生成一些日志,以指示 * 在哪里 * 创建文件)。

lstz6jyr

lstz6jyr3#

我运行了你的代码,它工作正常check this image
但是,您是如何编译它的?您是否记得运行a.out/execution?

相关问题