2 개의 텍스트 파일을 비교하고 첫 번째 줄을 인쇄하려고합니다.하지만 fgets() 명령에서 500 버퍼를 사용하고 있습니다. 공간을 낭비하는 것 같습니다. 줄의 길이를 모르는 경우 어떻게 동일한 프로그램을 만들 수 있습니까?두 개의 txt 파일을 C로 비교합니다.
여기 내 코드입니다 :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char const *argv[])
{
FILE *fp1, *fp2;
int nLine = 1;
char l1[500], l2[500];
system("clear");
if (argc < 3)
{
printf("Usage: %s <file1.txt> <file2.txt>\n",argv[0]);
exit(1);
}
if ((fp1 = fopen(argv[1],"r")) == NULL){
printf("Can't open file: %s\n", argv[1]);
exit(1);
}
if ((fp2 = fopen(argv[2],"r")) == NULL){
printf("Can't open file: %s\n", argv[2]);
exit(1);
}
fgets(l1,500,fp1);
fgets(l2,500,fp2);
while ((l1 != 0) && (l2 != 0)){
if(strcmp(l1,l2) != 0){
printf("Line number: %d\n", nLine);
printf("%s", l1);
printf("%s\n", l2);
exit(1);
} else {
fgets(l1,500,fp1);
fgets(l2,500,fp2);
nLine++;
}
}
return 0;
}
을 파일하지 않으면 당신은 무한 루프를가집니다. 'fgets()'의 반환 값을 확인하십시오. – chux
char가 다른 경우 두 파일의 문자를 비교 한 다음 줄을 인쇄하는 함수를 호출 할 수 있습니다. 우리가이 선을 따르지 않았기 때문에 이것은 까다로울 수 있습니다. 개행 문자가 생길 때까지 역 추적 할 수 있습니다. 그 다음 줄을 인쇄하십시오. –
목표를 달성하기 위해 버퍼가 필요하지 않습니다. 나는 비행 중 특파원의 캐릭터를 비교하고 그 과정에서 마주 친 가장 최근의 개행 캐릭터를 기억한다. – mw215