如何解决C 语言中的“差异”Linux 实用程序实现
我们的 CS 教授给我们分配了通过编写 C 程序来实现 diff LINUX 命令的作业。
我首先提取了在两个不同数组(line1 和 line2)中作为命令行参数传递的两个文件的行。
那之后怎么办?如何报告诸如 1,3c2,4 之类的更改; 1d0;等
输入将是这样的:
./diff file1.txt file2.txt
阅读这里的差异输出:https://www.howtoforge.com/tutorial/linux-diff-command-file-comparison/
(或者,如果您有 LINUX,请尝试在那里使用它以查看输出)
我已经写了这个:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LSIZ 200
#define RSIZ 100
// diff Implementation
int main(int argc,char **argv){
if(argc == 1){printf("No file names given!\n"); exit(1);}
if(argc > 3){printf("Cannot have more than 2 file names!\n"); exit(1);}
// FILE 1
char line1[RSIZ][LSIZ];
FILE *f1 = fopen(argv[1],"r");
if(f1==0){ perror("Error opening the File!\n"); exit(1); }
int i1 = 0;
int tot1 = 0;
while(fgets(line1[i1],LSIZ,f1)){
line1[i1][strlen(line1[i1]) - 1] = '\0';
i1++;
}
tot1 = i1;
fclose(f1);
// FILE 2
char line2[RSIZ][LSIZ];
FILE *f2 = fopen(argv[2],"r");
if(f2==0){ perror("Error opening the File!\n"); exit(1); }
int i2 = 0;
int tot2 = 0;
while(fgets(line2[i2],f2)){
line2[i2][strlen(line2[i2]) - 1] = '\0';
i2++;
}
tot2 = i2;
fclose(f2);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。