feof()函数判断是否读到数据末尾,为什么读不到空字符呢?读不到,那为什么读的字符总长度是字符串长度加1呢?详见代码,还有问题,求帮忙。
/*打开一个现有文本文件,将所有的小写字母转换为大写,然后将其拷贝至新的文本文件中。*/#include <stdio.h>
#include <stdlib.h>
void copy_file(char old[],char new[]);
FILE *fold,*fnew;
int main(void)
{
char buf[40];
char newname[10];
int count=0,a=0;
char ch;
if((fold=fopen("a.txt","r"))==NULL)
{
fprintf(stderr,"Error opening file.");
exit(-1);
}
rewind(fold);
while(1)
{
if(!feof(fold))
{
if((ch=fgetc(fold))=="\0") //防止空字符进行-32的转换,,但是为什么读取不到?
break;
else
buf[count++]=ch-32;
a++; //a为对读到的字符计数。
}
else
break;
}
fclose(fold);
a-=1; //去除空字符
for(count=0;count<a;count++)
{
printf("\nbuf[count]=%c",buf[count]);
}
printf("\nEnter newname...");
gets(newname);
copy_file(buf,newname);
getchar();
return 0;
}
void copy_file(char old[],char new[])
{
if((fnew=fopen(new,"w"))==NULL)
{
fprintf(stderr,"Error opening file.");
exit(-1);
}
fputs(old,fnew);
fclose(fnew);
}
在程序下建一个记事本文件输入abcdehahaha;但程序运行结果是在另一个文件中存入了ABCDEHAHAHA?bw腫w?@
是在是不懂,请高手帮助。