首页 > 试题广场 >

编写一个打开两个文件的程序。可以使用命令行参数或者请求用户输

[问答题]

编写一个打开两个文件的程序。可以使用命令行参数或者请求用户输入来获得文件名。

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;
}

发表于 2018-05-05 21:58:42 回复(0)