exit(1); } ch=getchar( );
while ( (ch=getchar())!='#' ) fputc(ch, fp); close(fp); }
3.文件复制,文件名来自main( )函数,填空完成下面程序。
#include
void file_copy(FILE *fout, FILE *fin) { char k; do{
k=fgetc( fin ); if(feof(fin)) break; fputc( k,fout ); }while( 1 ); }
void main(int argc, char *argv[ ]) { FILE *fp1, *fp2; if( argc !=3) return;
if((fp1=fopen(argv[2], \ fp2= fopen(argv[1],\; file_copy (fp2,fp1); fclose(fp1); fclose(fp2); }
任务2 文件综合程序设计
设计创建原始成绩表b1.txt,从文件b1.txt中取出成绩,排序后,按降序存放b2.TXT中,并输出前五名成绩报表。 参考代码如下:
#include \#define N 10 struct student {
int num;
char name[20]; int score[3]; float average; };
void sort(struct student stu[]);
void print(FILE *fp, struct student stu[]);
void printtopfive(FILE *fp, struct student stu[]); void main( ) {
struct student s[N]; int i;
FILE *fp1,*fp2; char ch;
if((fp1=fopen(\
{
printf(\不能打开文件c:\\\\b1.txt\ exit(1); }
if((fp2=fopen(\ {
printf(\不能打开文件c:\\\\b2.txt\ exit(1); }
for(i=0;i fscanf(fp1,\ &s[i].score[1],&s[i].score[2]); s[i].average=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3.0; } fprintf(fp2,\原始成绩报表\\n\ print(fp2,s); sort(s); fprintf(fp2,\排序之后的成绩报表\\n\ print(fp2,s); fprintf(fp2,\前五名成绩报表\\n\ printtopfive(fp2,s); } void sort(struct student stu[]) { int i,k,j; struct student t; for(i=0;i for(j=i+1;j { if(stu[k].average t=stu[i]; stu[i]=stu[k]; stu[k]=t; } } } void print(FILE *fp, struct student stu[]) { int i; fprintf(fp,\ for(i=0;i fprintf(fp,\ stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].average); } void printtopfive(FILE *fp, struct student stu[]) { int i; fprintf(fp,\ for(i=0;i<5;i++) fprintf(fp,\}