我编写了这个程序来读取文本文件中写入的段落并将其复制到另一个文件中。该程序工作正常但是当我打开复制文件时,它最终有一个垃圾字符。我在下面附上我的源代码。 我在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);
答案 0 :(得分:1)
声明
char ch = NULL;
错误,因为ch
属于char
类型且NULL
未char
类型为(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);
}