编写一个程序打开两个文件。可以使用命令行参数或提示用户输入文件名. 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;
}

posted on 2024-08-04 23:35  wessf  阅读(4)  评论(0编辑  收藏  举报