반응형
두 개의 파일이 같은지 비교하는 C언어 코드입니다.
명령 프롬프트(command line)에서 두 개의 파일명을 받고, 해당 파일을 읽어서 그 내용을 비교합니다.
// compare.c
#define _CRT_SECURE_NO_WARNINGS // Visual Studio
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 1000
int main(int argc, char *argv[]) {
if (argc != 3) {
printf("Usage: compare <file1> <file2>\n");
return 1;
}
char *filename1 = argv[1];
char *filename2 = argv[2];
FILE *file1 = fopen(filename1, "r");
FILE *file2 = fopen(filename2, "r");
if (file1 == NULL || file2 == NULL) {
printf("Failed to open one or both files.\n");
return 1;
}
char line1[MAX_LENGTH];
char line2[MAX_LENGTH];
int lineNum = 1;
int differences = 0;
while (fgets(line1, MAX_LENGTH, file1) && fgets(line2, MAX_LENGTH, file2)) {
if (strcmp(line1, line2) != 0) {
printf("Difference at line %d:\n", lineNum);
printf("%s: %s", filename1, line1);
printf("%s: %s", filename2, line2);
differences++;
}
lineNum++;
}
while (fgets(line1, MAX_LENGTH, file1)) {
printf("%s has more lines at line %d:\n", filename1, lineNum);
printf("%s: %s", filename1, line1);
differences++;
lineNum++;
}
while (fgets(line2, MAX_LENGTH, file2)) {
printf("%s has more lines at line %d:\n", filename2, lineNum);
printf("%s: %s", filename2, line2);
differences++;
lineNum++;
}
if (differences == 0) {
printf("Files are identical.\n");
} else {
printf("Found %d difference(s) between the files.\n", differences);
}
fclose(file1);
fclose(file2);
return 0;
}
실행 예시의 화면입니다.
1. 프로그램명만 입력하면 - 프로그램을 실행하는 형식을 출력합니다.
2. 두 개의 파일명 중에서 한 개라도 없는 파일명을 입력하면 아래와 같은 메시지를 출력하고 종료합니다.
3. 두 개의 파일 내용이 완전히 일치하면 아래와 같은 메시지를 출력합니다.
4. 두 개의 파일이 다르면 라인 번호와 함께 틀린 내용을 출력합니다.
반응형
'C_C++' 카테고리의 다른 글
(C언어) 지정된 폴더의 파일 목록 출력하기 (0) | 2023.07.10 |
---|---|
(C/C++) 사칙연산 계산하기 (0) | 2023.07.09 |
(C언어) 스레드로 배경음악 재생하기 (0) | 2023.06.15 |
(C언어) 배경음악 (소리 .wav) 재생하기 (0) | 2023.06.15 |
(C언어) 1부터 n까지의 곱 (0) | 2023.06.14 |