C 复制文本文件错误

C 复制文本文件错误,c,text,C,Text,我写这个程序是为了阅读一个文本文件中的段落,然后将它复制到另一个文件中。程序运行正常,但当我打开复制文件时,它最后有一个垃圾字符。我在下面附上我的源代码。 我在EOF一直有“ÿ”这个角色。有人能帮我吗 void main() { FILE *fp; char ch = NULL; fp = fopen("vanban.txt", "r"); if (fp != NULL) { printf("Mo File thanh cong!\

我写这个程序是为了阅读一个文本文件中的段落,然后将它复制到另一个文件中。程序运行正常,但当我打开复制文件时,它最后有一个垃圾字符。我在下面附上我的源代码。 我在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);
void main()
{
文件*fp;
char ch=NULL;
fp=fopen(“vanban.txt”,“r”);
如果(fp!=NULL)
{
printf(“Mo文件thanh-cong!\n”);
printf(“文档文件thanh-cong!\n”);
char ch=NULL;
文件*fp1;
fp1=fopen(“vanban1.txt”,“w”);
做
{
如果(ch=0)
{
ch=fgetc(fp);
fputc(ch,fp1);
}
}while(ch!=EOF);
fclose(fp1);
}
其他的
{
printf(“文件khong mo duoc hoac khong ton tai.\n”);
}
fclose(fp);
声明

char ch = NULL;
是错误的,因为
ch
属于
char
类型,
NULL
不是
char
类型它属于
(void*)0
类型

另外
fgetc()
返回
int
而不是
char
,请查看
fgetc()
的手册页。它显示

fgetc()从stream读取下一个字符,并将其作为 文件或错误结尾处转换为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);

}
intch=0;
而((ch=fgetc(fp))!=EOF){
如果(ch=0)/*您在这里检查什么?检查是否确实需要它*/
fputc(ch,fp1);
}

大声读出来。检查一个字符是否有效。如果它是读取另一个字符并将其写入文件。看到问题了吗?快速测试:字符是有符号的还是无符号的?需要测试哪些值?哪些值是无效的,需要排除?此代码是否可以采用开关的形式陈述