编写一个打开两个文件的程序。可以使用命令行参数或者请求用户输入来获得文件名。
a.让程序打印第一个文件的第一行、第二个文件的第一行、第一个文件的第二行、第二个文件的第二行,依此类推,直到打印完行数较多的文件的最后一行。
#include <stdio.h> #include <stdlib.h> #define M 100 int main(int argc, char *argv[]) { FILE *fp1,*fp2; char str1[M], str2[M]; int E1,E2; if( ( fp1=fopen(argv[1],"r") ) == NULL) { printf("Can't open %s",argv[1]); exit(1); } if( ( fp2=fopen(argv[2],"r") ) == NULL) { printf("Can't open %s",argv[2]); exit(1); } while( 1 ) { if( (E1=fscanf(fp1,"%s",str1)) == 1 ) puts(str1); if( (E2=fscanf(fp2,"%s",str2)) == 1 ) puts(str2); if( E1 != 1&& E2 != 1) break; } fclose(fp1); fclose(fp2); return 0; } b.修改程序,把行号相同的行打印到同一行上。 #include <stdio.h> #include <stdlib.h> #define M 100 int main(int argc, char *argv[]) { FILE *fp1,*fp2; char str1[M], str2[M]; int E1,E2; if( ( fp1=fopen(argv[1],"r") ) == NULL) { printf("Can't open %s",argv[1]); exit(1); } if( ( fp2=fopen(argv[2],"r") ) == NULL) { printf("Can't open %s",argv[2]); exit(1); } while( 1 ) { if( (E1=fscanf(fp1,"%s",str1)) == 1 ) printf("%s",str1); if( (E2=fscanf(fp2,"%s",str2)) == 1 ) printf("%s",str2); if( E1 != 1&& E2 != 1) break; printf("\n"); } fclose(fp1); fclose(fp2); return 0; }
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题