本文介绍: 【代码】C //练习 7-6 编写一个程序,比较两个文件并打印它们第一个不相同的行。

C程序设计语言 (第二版) 练习 7-6

练习 7-6 编写一个程序,比较两个文件并打印它们第一个不相同的行。

注意:代码在win32控制台运行,在不同的IDE环境下,有部分可能需要变更。
IDE工具:Visual Studio 2010

 

代码块:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXLINE 1000

int main(int argc, char *argv[]) {
    char* prog = argv[0];
    FILE *fp1, *fp2;
    unsigned long line;
    char *fn1, *fn2;
    char *fr1, *fr2;
    char line1[MAXLINE], line2[MAXLINE];

    if(argc != 3){
        fprintf(stderr, "%s: must provide two files as inputsn", prog);
        exit(1);
    }

    fn1 = *++argv;
    if((fp1 = fopen(fn1, "r")) == NULL){
        fprintf(stderr, "%s: cannot open %sn", prog, fn1);
        exit(2);
    }

    fn2 = *++argv;
    if((fp2 = fopen(fn2, "r")) == NULL){
        fprintf(stderr, "%s: cannot open %sn", prog, fn2);
        exit(2);
    }

    line = 1;
    for(;; line++){
        fr1 = fgets(line1, MAXLINE, fp1);
        fr2 = fgets(line2, MAXLINE, fp2);

        if(fr1 == NULL || fr2 == NULL){
            break;
		}
        if(strcmp(line1, line2) != 0){
            break;
		}
    }

    if(fr1 == NULL && fr2 == NULL){
        printf("files matchn");
        exit(0);
    }

    if(fr1 == NULL || fr2 == NULL){
        printf("file %s ended before file %sn",
               (fr1 == NULL) ? fn1 : fn2,
               (fr1 == NULL) ? fn2 : fn1);
    }
	else{
        printf("mismatch on line %ld:n%s:n%sn%s:n%sn",
               line, fn1, line1, fn2, line2);
    }

    system("pause");
	return 0;
}

原文地址:https://blog.csdn.net/navicheung/article/details/135646948

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_58288.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注