C 程序文件复制

标签 c

我编写了一段 C 代码,用于将文件数据从一个文件复制到另一个文件。以下代码工作正常。但编译器仍然显示错误答案,因为执行时间高达 280.0,下面是我的代码

#include<stdio.h>
int main()
{
    FILE *fp1,*fp2;
    char ch,fname1[20],fname2[20];
    printf("Enter the input file name\n");
    gets(fname1);
    printf("Enter the output file name\n");
    gets(fname2);
    fp1=fopen(fname1,"r");
    fp2=fopen(fname2,"w");
    do
    {
        ch=fgetc(fp1);
        fputc(ch,fp2);
    }
    while(ch!=EOF);
    return 0;
}

最佳答案

您的程序将始终输出 EOF 字符。

fgetc 实际上不返回字符,而是返回 int。 EOF 实际上是-1。当您写入它时,一个额外的字节(0xFF)将被写入到输出文件中。

正确的代码如下:

while ((ch = fgetc(fp1)) != EOF)
{
    fputc(ch,fp2);
}

您可能会争论这段代码是否优雅,但重点是您不应该打印 EOF 字符。

关于C 程序文件复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37377425/

相关文章:

c - 在 Clion 2017.3.4 中调试时的反汇编 View - 这意味着什么?

c - ISO C 和有符号文字常量

c++ - #if 对比#ifndef 对比#ifdef

c++ - 如何在 C++ winapi 中获取加载图标的大小

无法让 switch() 在之后重复

c++ - 将 float 截断为前 N 个十进制数字

c - 使用指针会导致段错误

c - 使用 C 为 atmega328p 微 Controller 设计 react 定时器

c - SSL_read 无限期阻塞

c++ - __cyg_profile_func_enter 和 g++ 2.95.4