C语言读磁盘文件时多读一个字符怎么办,就是那个ASCII码为152的字符。。求指点。。

源代码#include<stdio.h>#include<stdlib.h>#include<string.h>intmain(){chara[80],b[40],tem... 源代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ()
{
char a[80],b[40],temp;
int i=0,j=0,k;
FILE *f1,*f2,*f3,*f4;
f1=fopen ("E://三级//a.txt","r");
f2=fopen ("E://三级//b.txt","r");
f3=fopen ("E://三级//c.txt","w");
//f4=fopen ("E://三级//a1.txt","w");
if (!f1)
{printf ("open A error!\n");}
if (!f2)
{printf ("open B error!\n");}
if (!f3)
{printf ("open C error!\n");}
while (!feof(f1))
{
a[i]=fgetc(f1);putchar(a[i]);fputc(a[i],f4);i++;
}
//printf("啊");
a[i]='\0';
while (!feof(f2))
{
b[j]=fgetc(f2);putchar(b[j]);j++;
}
b[j]='\0';
//printf("吧");
strcat (a,b);
//printf("%s",a);
printf("\n");
for (i=0;a[i+1]!='\0';i++)
{
for (j=i+1;a[j]!='\0';j++)
{
if (a[i]<a[j])
{temp=a[i];a[i]=a[j];a[j]=temp;}
}
}
fputs(a,f3);
printf("%s",a);
//fputc('\n',f3);
fclose(f1);
fclose(f2);
fclose(f3);
return 0;
}
展开
 我来答
真仰泽星
2011-07-29 · TA获得超过220个赞
知道答主
回答量:196
采纳率:100%
帮助的人:199万
展开全部
那个字符是常量EOF,表示以文件结束(end of file)你用fputc循环读取。写成
FILE *fp;
/*初始化*/
char c;
while((c=fputc(fp)!=EOF)
{
/*操作语句*/
}
就可以了
追问
应该是fgetc吧。。
我用fgetc试了一下,
while (c=fgetc(f1)!=EOF)
{
a[i]=c;putchar(a[i]);i++;
}
那个f4本来就是我用来测试的,所以就直接去掉了,
可是程序结果
求指点。。
追答
while ((c=fgetc(f1))!=EOF)/*这句要在c=fgetc(f1)外面加括号*/
{
a[i]=c;putchar(a[i]);i++;
}
liulin0017
2011-07-29 · 超过15用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:46.9万
展开全部
while (!feof(f1))
这句由于文件结束状态在fgetc()的时候才会被改变,所以会多读一次。
解决办法
a[0] = fgetc(f1);
while (!feof(f1))
{
putchar(a[i]);fputc(a[i],f4);i++;a[i]=fgetc(f1);
}
你试试

参考资料: feof

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式