【问题标题】:how to open a file to Read and other to Write in C?如何在 C 中打开一个文件进行读取和其他写入?
【发布时间】:2017-05-23 15:17:24
【问题描述】:

看看这段代码

void readAndWrite() {
    char url[]="data.txt";
    char url2[]="output.txt";
    char data[256];
    FILE *arq;
    FILE *arqw;

    arq = fopen(url, "r");
    arqw = fopen(url2, "w");
    if(arq == NULL) {
        printf("Erro, nao foi possivel abrir o arquivo\n");
    } else {
        while(fgets(data, 256, arq) != NULL) {         
            fprintf(arqw,"This %s",data);
        }
    }
    fclose(arq);
    fclose(arqw);
}

打开文件没有问题。如果两者都不输入NULL。但是,无法读取读取文件。

【问题讨论】:

  • 您是否测试过 arqw 不为 NULL。如果您将 fprintf 打印到标准输出(或使用 printf)而不是写入 arqw,代码是否会成功执行?

标签: c printf fopen


【解决方案1】:

您确定创建了“data.txt”吗? 如果它不存在,则 arg 将始终为 NULL,并且您将收到错误打开文件。 阅读修改器https://www.tutorialspoint.com/c_standard_library/c_function_fopen.htm

您可以通过 errno 读取错误 printf("errno is %d and fd is %d\n", errno, arq);

char url[] = "data.txt";
char url2[] = "output.txt";
char data[256];
FILE *arq;
FILE *arqw;

arq = fopen(url, "r");
if (arq == NULL) {
    printf("Erro, nao foi possivel abrir o arquivo\n");
    printf("errno is %d and fd is %d\n", errno, arq);
}
else {
    arqw = fopen(url2, "w");
    while ((fgets(data, 256, arq)) != NULL) {
        fprintf(arqw, "This %s", data);
    }
    fclose(arq);
    fclose(arqw);
}

【讨论】:

  • 是的。此文件已创建
  • Tutorialspoint 充满了错误,坦率地说是学习 C 的可怕资源,作为参考更糟糕。此外,鉴于操作明确声明他们没有收到错误,这充其量只是一个评论。 (不要大喊大叫,我知道您还不能发布 cmets,但请不要因此滥用答案部分 :))
  • 您的代码看起来不错。你需要使用绝对路径吗? data.txt 中的换行符是否正确?
猜你喜欢
  • 2023-03-09
  • 2016-05-07
  • 2011-10-02
  • 2018-05-08
  • 2020-04-01
  • 2020-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
相关资源
最近更新 更多