读书人

用fread读完文件a后再读文件b缺无法

发布时间: 2012-02-29 16:44:10 作者: rapoo

用fread读完文件a后,再读文件b缺无法读取?
代码如下:但将其中任意一句while(fread(p++,sizeof(char),1,fp)==1);改为
while(!feof(fp))*p++=fgetc(fp);都可以完整的读取2个文件,请问这是什么原因造成的。
*********************************************************************
#include <stdio.h>
char *load(char *p)
{
FILE *fp;
if ((fp=fopen( "a ", "r "))==NULL)
{printf( "file open error. ");
return p;}
while(fread(p++,sizeof(char),1,fp)==1);
fclose(fp);
return p;
}
char *load1(char *p)
{
FILE *fp;
if ((fp=fopen( "b ", "r "))==NULL)
{printf( "file open error. ");
return p;}
while(fread(p++,sizeof(char),1,fp)==1);
fclose(fp);
return p;
}
void sort (char *p)
{
int i,j,k;
char tmp;
for(i=0;*(p+i+1);i++)
{
k=i;
for(j=i+1;*(p+j);j++)
if(*(p+k)> *(p+j))k=j;
tmp=*(p+i);*(p+i)=*(p+k);*(p+k)=tmp;
}
}
void save(char *p)
{
FILE *fp;
if((fp=fopen( "c ", "w "))==NULL)
{
printf( "creat file error. ");
return;
}
while(*p++)fputc(*(p-1),fp);
fclose(fp);
}
main()
{
/*read the two file*/
char str[81];
char *p;
p=str;
p=load(p);
printf( "%s %d\n ",str,p);
p=load1(p);
printf( "%s %d\n ",str,p);
*p= '\0 ';
/*sort*/
p=str;
sort(p);
save(p);
getch();
}
*************************************************************************


[解决办法]
while(fread(p++,sizeof(char),1,fp)==1);

后面加一句

p--;

读书人网 >C++

热点推荐