Test how to read a file and print to shell.and next I extended the program to a copy program.
#include
char buff[300];
void readFromFile(){
FILE *fp;
if((fp=fopen("5.03.c","rb"))==NULL){
printf("fopen error");
}
int i;
while(!feof(fp)){
fread(buff,sizeof(struct stu),1,fp);
printf("%s",buff);
memset(buff,0,300);
}
if(fclose(fp)!=0){
printf("fclose error");
}
printf("\n");
}
int main(){
readFromFile();
}
//下面一个文件复制函数,其中需要注意的地方已经指出:)
#include
#define SIZE 4
char buff[300];
void cpFile(char *from,char *to){
FILE *fromfp,*tofp;
if((fromfp=fopen(from,"rb"))==NULL){
printf("fopen error");
}
if((tofp=fopen(to,"wb"))==NULL){
printf("fopen error");
}
int i;
while(!feof(fromfp)){
int len=fread(buff,sizeof(char),sizeof(buff),fromfp);
//int len=strlen(buff);//控制实际读到buff中的内容 把它写到文件中 这里对二进制文件不好使:) 这样也不能很好工作 后来采用了上面的方法;
//fwrite(buff,sizeof(buff),1,tofp);
fwrite(buff,len,1,tofp);
memset(buff,0,300);
}
if(fclose(fromfp)!=0){
printf("fclose error");
}
if(fclose(tofp)!=0){
printf("fclose error");
}
}
int main(int arg,char *arv[]){
if(arg!=3){
printf(" 参数个数不够,需要两个 源文件,目的文件\n");
return;
}
cpFile(arv[1],arv[2]);
}