⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mrg.c

📁 数字转换的六个功能模块
💻 C
字号:
/*
** mrg.c -- compares two sorted text files
** Copyright 1982 J. E. Hendrix.  All rights reserved.
*/
#include <stdio.h>
#include "tools.h"
#define NOCCARGC
int cmpr, fd1, fd2, i;
char *line1, *line2, column, arg[MAXFN];
main(argc, argv) int argc, *argv; {
  int error;
  column='0';
  fd1=fd2=stdin;
  line1=malloc(MAXLINE+1);
  line2=malloc(MAXLINE+1);
  error=NO;
  i=0;
  while(getarg(++i, arg, MAXFN, argc, argv)!=EOF) {
    if(arg[0]!='-') {
      if(fd1==stdin) {
        if((fd1=fopen(arg, "r"))==NULL) cant(arg);
        }
      else if(fd2==stdin) {
        if((fd2=fopen(arg, "r"))==NULL) cant(arg);
        }
      else error=YES;
      }
    else if(((arg[1] > '0')&(arg[1] < '4'))
            |(same(arg[1], 'f')))
      column=arg[1];
    else error=YES;
    }
  if((error)|(fd1==stdin)) {
    fputs("usage: MRG file [file] [-1|-2|-3|-F]\n", stderr);
    abort(7);
    }
  auxbuf(fd1, 4096);
  auxbuf(fd2, 4096);
  getline(line1, fd1);
  getline(line2, fd2);
  while(YES) {
    poll(YES);
    cmpr=lexcmp(line1, line2);
    if(cmpr < 0) {
      if(same(column, 'f')) fout("1) ", line1);
      else if((column=='0')|(column=='1')) sout(line1, stdout);
      getline(line1, fd1);
      continue;
      }
    else if(cmpr > 0) {
      if(same(column, 'f')) fout("  2) ", line2);
      else if((column=='0')|(column=='2')) sout(line2, stdout);
      getline(line2, fd2);
      continue;
      }
    if(line1[0] == 127) break;
    if(same(column, 'f'))   fout("    3) ", line1);
    else if((column=='0')|(column=='3')) sout(line1, stdout);
    getline(line1, fd1);
    getline(line2, fd2);
    }
  fclose(stdout);
  }

getline(line, fd) char *line; int fd; {
  if(fgets(line, MAXLINE+1, fd)==NULL) {
    line[0] = 127;
    line[1] = NULL;
    }
  }

/*
** fout -- formatted output of a line
*/
fout(header, data) char *header, *data; {
  sout(header, stdout);
  sout(data, stdout);
  }

#include "out.c"
#include "cant.c"
#include "same.c"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -