p376.7
A方案
1 #include<stdio.h> 2 #include<stdlib.h> 3 #define LEN 40 4 void rank(FILE *, FILE *); 5 int main(void) 6 { 7 FILE *fp, *fc; 8 int ch, bp; 9 char file1[LEN], file2[LEN]; 10 11 puts("enter file1 name"); 12 if((fp=fopen(gets(file1), "r"))==NULL){ 13 fputs("can‘t open", stdout); 14 exit(1); 15 } 16 17 puts("enter file2 name"); 18 if((fc=fopen(gets(file2), "r"))==NULL){ 19 fputs("can‘t open", stdout); 20 exit(2); 21 } 22 23 rank(fp, fc); 24 if((fclose(fp)!=0)||(fclose(fc)!=0)) 25 puts("error in closing files"); 26 27 system("pause"); 28 return 0; 29 } 30 31 void rank(FILE *fp, FILE *fc) 32 { 33 int ch, bp; 34 while(1){ 35 while(((ch=getc(fp))!=‘\n‘)&&ch!=EOF) 36 putc(ch, stdout); 37 if(ch==‘\n‘) 38 putc(ch, stdout); 39 while(((bp=getc(fc))!=‘\n‘)&&bp!=EOF) 40 putc(bp, stdout); 41 if(ch==‘\n‘) 42 putc(bp, stdout); 43 if((ch==EOF)&&(bp==EOF)) 44 break; 45 } 46 }
B方案
1 #include<stdio.h> 2 #include<stdlib.h> 3 #define LEN 40 4 void rank(FILE *, FILE *); 5 int main(void) 6 { 7 FILE *fp, *fc; 8 int ch, bp; 9 char file1[LEN], file2[LEN]; 10 11 puts("enter file1 name"); 12 if((fp=fopen(gets(file1), "r"))==NULL){ 13 fputs("can‘t open", stdout); 14 exit(1); 15 } 16 17 puts("enter file2 name"); 18 if((fc=fopen(gets(file2), "r"))==NULL){ 19 fputs("can‘t open", stdout); 20 exit(2); 21 } 22 23 rank(fp, fc); 24 if((fclose(fp)!=0)||(fclose(fc)!=0)) 25 puts("error in closing files"); 26 27 system("pause"); 28 return 0; 29 } 30 31 void rank(FILE *fp, FILE *fc) 32 { 33 int ch, bp; 34 while(1){ 35 while(((ch=getc(fp))!=‘\n‘)&&ch!=EOF) 36 putc(ch, stdout); 37 while(((bp=getc(fc))!=‘\n‘)&&bp!=EOF) 38 putc(bp, stdout); 39 if((bp==‘\n‘)||(ch==‘\n‘)) 40 printf("\n"); 41 if((ch==EOF)&&(bp==EOF)) 42 break; 43 } 44 }
p376.8
1 #include<stdio.h> 2 #include<stdlib.h> 3 #define LEN 40 4 int main(int argc, char *argv[]) 5 { 6 FILE *fp, *fc, *fd[LEN]; 7 char name1[LEN], name2[LEN]; 8 int ch, bp, count[2]={0}, i, num[LEN]={0}; 9 if(argc==2){ 10 puts("enter file1 name"); 11 if((fp=fopen(gets(name1), "r"))==NULL) 12 fputs("can‘t open", stderr); 13 puts("enter file1 name"); 14 if((fc=fopen(gets(name2), "r"))==NULL) 15 fputs("can‘t open", stderr); 16 17 while((ch=getc(fp))!=EOF) 18 if(ch==argv[1][0]) 19 count[0]++; 20 while((bp=getc(fc))!=EOF) 21 if(bp==argv[1][0]) 22 count[1]++; 23 24 printf("%s has %d %c\n", name1, count[0], *argv[1]); 25 printf("%s has %d %c\n", name2, count[1], *argv[1]); 26 } 27 28 for(i=2; i<argc; i++){ 29 if((fd[i]=fopen(argv[i], "r"))==NULL){ 30 fputs("can‘t open\n", stderr); 31 continue; 32 } 33 while((ch=getc(fd[i]))!=EOF) 34 if(ch==*argv[1]) 35 num[i]++; 36 printf("%s has %d %c\n", argv[i], num[i], *argv[1]); 37 } 38 39 system("pause"); 40 return 0; 41 }
p376.10
1 #include<stdio.h> 2 #include<stdlib.h> 3 #define LEN 40 4 int main(void) 5 { 6 FILE *fp; 7 char name[LEN]; 8 long offset; 9 int ch; 10 11 puts("enter the file name"); 12 if((fp=fopen(gets(name), "r"))==NULL){ 13 fprintf(stderr, "can‘t open\n"); 14 exit(1); 15 } 16 puts("enter an offset of file(q to quit)"); 17 while(scanf("%ld", &offset)==1){ 18 fseek(fp, offset, SEEK_SET); 19 while(((ch=getc(fp))!=‘\n‘)&&ch!=EOF&&ch!=‘\r‘) 20 fprintf(stdout, "%c", ch); 21 if(ch==EOF) 22 exit; 23 printf("\n"); 24 puts("enter an offset of file(q to quit)"); 25 } 26 27 fclose(fp); 28 system("pause"); 29 return 0; 30 }
时间: 2024-10-29 10:46:48