【问题标题】:C Prog fprintf not generating outputC Prog fprintf 不生成输出
【发布时间】:2022-11-13 21:22:36
【问题描述】:

我在下面编写了以下代码,并在 xcode 和 vscode 上运行它而没有错误。但是,我无法获得任何输出 filename.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;
}

【问题讨论】:

  • 添加错误消息:if( fp != NULL ){ ... } else { perror("filename.txt"); }。不要在错误情况下关闭文件。 (更典型的是写if( fp == NULL ){ perror("filename.txt"); exit(1); }
  • 假设fopen 没有失败,则应该在程序运行的目录中创建名称。您可以使用getcwd 获取工作目录并打印它以查看位置。
  • 我是 c 编程的新手。请问如何打印getcwd?再次感谢。我也尝试过 perror 方法,它显示 filename.txt: Permission denied。这太奇怪了。

标签: c


【解决方案1】:

运行它没有错误

fclose(NULL) 是未定义的行为(UB),因此不清楚是否有错误。

在这两种情况下都打印一些东西 - 并使用' '

#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>
", filename);
  } else { 
    printf("Success opening <%s>
", filename);
    fprintf(fp,"%s %d","Hello", 555);
    fclose(fp);
  }

  return 0;
}

【讨论】:

    猜你喜欢
    • 2014-08-24
    • 2017-06-08
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    相关资源
    最近更新 更多