【问题标题】:C - fprintf isn't writing to fileC - fprintf 没有写入文件
【发布时间】:2015-08-09 19:36:34
【问题描述】:

C - fprintf 没有写入文件,知道为什么吗?

#include <stdio.h>
#include <stdlib.h>
int main(void){
    FILE* pfile=fopen("/home/user-vlad/Programming/C-other/meme.txt","r");
    if(pfile==NULL){
        printf("ERROR: Stream is equal to NULL\n");
        exit(1);
    }
    fprintf(pfile,"Hello");
    fclose(pfile);
    return 0;
}

编译器:clang,操作系统:FreeBSD

【问题讨论】:

  • 您打开文件只是为了阅读。阅读manual page for fopen 以及第二个参数的含义。 "r" 表示您只想阅读。有写入、追加等选项。
  • 当 fopen 错误发生时(pfile 为 NULL)然后使用 'perror()' 因为错误的系统消息将附加到您在括号之间放置了双引号。 IE。 perror("fopen fo meme.txt 失败");

标签: c unix clang freebsd


【解决方案1】:

假设文件打开可能是因为您使用参数"r" 调用了fopen(),这意味着读取。

要写你可以使用参数"w"

fopen("/home/user-vlad/Programming/C-other/meme.txt","w");

或者如果文件已经存在"r+"

fopen("/home/user-vlad/Programming/C-other/meme.txt","r+");

或者如果文件已经存在并且你想追加你可以使用"a"

fopen("/home/user-vlad/Programming/C-other/meme.txt","a");

您可以通过fopen()here了解更多信息。

【讨论】:

  • 不,文件已经存在。我只想让 fprintf 写入一个已经存在的文件。
  • @CIAAbigguy 然后你可以使用"r+"
  • 虽然写一个新文件并打印到它确实有效
  • 这确实有效,但我想添加到文件中,而不是覆盖它,在这种情况下,我有文本,我想写入其中包含“hello”的文件然后放置将“世界”一词融入其中
  • @CIAAbigguy 请阅读fopen 的手册页。那里描述了所有选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 2019-03-25
  • 1970-01-01
  • 2021-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多