【问题标题】:C program not writing to a fileC程序不写入文件
【发布时间】:2021-09-22 23:16:36
【问题描述】:

我正在阅读第 11 章(文件处理)中的“C:如何编程”,并使用此算法将字符串附加到名为 info.txt 的文件中,但它不起作用一点也不。我做错了什么?

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

int main(void)
{
    FILE *fp = fopen("info.txt","w");
    char buff[100];
    if(fp == NULL){
        fprintf(stdout,"Error opening file\n");
        exit(1);
    }
 

    while(!feof(stdin)){
        fprintf(stdout,"Type a string/\nEOF ends input\n");
        if(!fgets(buff,sizeof buff,stdin)){
            fprintf(stderr,"Error reading string");
            exit(2);
        }
        buff[strcspn(buff,"\n")] = 0;
        fprintf(fp,"%s",buff);
    }
    fclose(fp); 
}

【问题讨论】:

  • «它根本不起作用»您能更准确地描述一下吗?
  • 您的问题描述不是很有帮助。当你运行这个程序时究竟会发生什么? (是没有append的问题吗?因为代码中没有任何东西导致写操作发生在文件末尾。)

标签: c file


【解决方案1】:

我猜你错误地插入了 EOF。在回答 here 时,EOF 在 Unix 系统中使用 CTRL+D 插入,在 Windows 中使用 CTRL+Z 插入。

完全使用您的代码,它对我有用,所以我猜您正在尝试使用 CTRL+C 或其他命令插入 EOF,这会关闭应用程序并将文件留空。

另外,如果你想让它永远追加,即使你关闭程序并再次打开它,你应该使用模式追加“a”而不是写“w”[reference]

FILE *fp = fopen("info.txt","a");

【讨论】:

  • 是的,我确实按错了组合键。
猜你喜欢
  • 1970-01-01
  • 2016-02-19
  • 2012-01-16
  • 1970-01-01
  • 2014-01-30
  • 2021-11-11
  • 2012-02-19
  • 2016-09-15
  • 1970-01-01
相关资源
最近更新 更多