gpt4 book ai didi

c - 使用 C 代码复制 .dat 文件时出现额外字符

转载 作者:太空宇宙 更新时间:2023-11-04 01:56:07 25 4
gpt4 key购买 nike

我是 C 语言的新手,刚开始学习文件处理章节,所以请随时纠正我的代码,我坚持。在下面给出的 C 代码中,A-Z 字符从名为 textfile.dat 的 dat 文件中复制并粘贴到另一个名为 output.dat 的 dat 文件中

但是当我打开 output.dat 时,我得到这样的结果:A乙C丁乙FGH我杰钾大号米否欧P问R小号吨üVWX是Zÿ <- Z 旁边有些奇怪,我不知道这是什么以及为什么它一次又一次地发生。请有人向我解释一下
C代码:

int main()
{
char ch;
FILE *fpin,*fpout;

fpin=fopen("textfile.dat","r");
if(fpin==NULL)
{printf("CANNOT FIND THE DESIGNATED FILE.");
exit(1);
}

fpout=fopen("output.dat","w");

while(!feof(fpin))
{
ch=getc(fpin);
printf("\t%c",ch);
putc(ch,fpout);
}
fclose(fpin);
fclose(fpout);

return 0;
}

最佳答案

feof(fpin)测试 EOF 指标;在设置之前,getc(fpin)将返回 EOF 字符。您在输出中看到的是这个字符。 (是-1,在单字节字符中是0xFF。)

相反,你应该这样做:

while((ch = getc(fpin)) != EOF)
{
printf("\t%c",ch)
putc(ch,fpout);
}

这个循环直到它读取 EOF,然后在 EOF 被打印或写入输出文件之前跳出循环。

此外:您需要 #include <stdio.h>#include <stdlib.h>在文件的开头。

关于c - 使用 C 代码复制 .dat 文件时出现额外字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34082182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com