编写一个程序打开两个文件。可以使用命令行参数或提示用户输入文件名. a.该程序以这样的顺序打印:打印第一个文件的第一行,第二个文件的第一行,第一个文件的第二行,第二个文件的第二行,以此类推,打印到行数较多文件的最后一行 b.修改程序,把行号相同的行打印成一行
/编写一个程序打开两个文件。可以使用命令行参数或提示用户输入文件名.
a.该程序以这样的顺序打印:打印第一个文件的第一行,第二个文件的第一行,第一个文件的第二行,第二个文件的第二行,以此类推,打印到行数较多文件的最后一行
b.修改程序,把行号相同的行打印成一行/
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
void printf_a(FILE *file_name, FILE *file_name2)
{
char buff[256],str[256];
int lien=1;
while(1)
{
char *count=fgets(buff,sizeof(buff),file_name);
char *count2=fgets(str,sizeof(str),file_name2);
printf("printf_a\n");
if(count && count2)
{
printf("line:%d file:%s\n",lien,buff);
printf("line:%d file2:%s\n",lien,str);
}
else
{
break;
}
lien++;
}
}
void printf_b(FILE *file_name, FILE *file_name2)
{
char buff[256],str[256];
int lien=1;
while(1)
{
char *count=fgets(buff,sizeof(buff),file_name);
char *count2=fgets(str,sizeof(str),file_name2);
if(count &&count2)
{
printf("printf_b:line:%d file:%s file2:%s\n",lien,buff,str);
}
else
{
break;
}
lien++;
}
}
int main(int argc,char *argv[])
{
printf("please enter [./可执行文件] [文件名1] [文件名2]\n");
if(argc!=3)
{
return 0;
}
FILE *fd=fopen(argv[1],"r");
FILE *fd2=fopen(argv[2],"r");
assert(fd);
assert(fd2);
printf_a(fd,fd2);
rewind(fd);
rewind(fd2);
printf_b(fd,fd2);
return 0;
}