复制文本文件错误

时间:2018-06-13 04:24:29

标签: c text

我编写了这个程序来读取文本文件中写入的段落并将其复制到另一个文件中。该程序工作正常但是当我打开复制文件时,它最终有一个垃圾字符。我在下面附上我的源代码。 我在EOF继续保持“ÿ”字符。任何人都可以帮我这个吗?

    void main()
{
    FILE *fp;
    char ch = NULL;
    fp = fopen("vanban.txt", "r");
    if (fp != NULL)
    {
        printf("Mo File thanh cong!\n");
        printf("Doc File thanh cong!\n");
        char ch = NULL;
        FILE *fp1;
        fp1 = fopen("vanban1.txt", "w");
        do
        {
            if (ch <= 255 && ch >= 0)
            {
                ch = fgetc(fp);
                fputc(ch, fp1);
            }
        } while (ch != EOF);
        fclose(fp1);
    }
    else
    {
        printf("FIle khong mo duoc hoac khong ton tai.\n");
    }
    fclose(fp);

1 个答案:

答案 0 :(得分:1)

声明

char ch = NULL;

错误,因为ch属于char类型且NULLchar类型为(void*)0类型。

同样fgetc()会返回int而不是char,请查看fgetc()的手册页。它说

  

fgetc()从streamand读取下一个字符将其返回为   一个无符号的char转换为int,或者文件结尾或错误的EOF。

例如

int ch = 0;

while( (ch = fgetc(fp)) != EOF) {

    if (ch <= 255 && ch >= 0) /* what you are checking here ? Check whether it's really required */

           fputc(ch, fp1);

}