반응형

명령어 라인으로 주어진 2개의 텍스트 파일을 합하여 하나의 파일로 만드는 프로그램을 작성하라.


argc는 argument의 수, argv는 argument가 char 형 문자열로 저장되는 포인터 배열입니다.

argv[0]은 무조건 실행 파일의 경로가 저장되고 argv[1]부터는 사용자가 입력한 인수가 저장되는데

공백문자(' ')로 분리됩니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
int main(int argc, char *argv[])
    FILE *fp1=NULL;
    FILE *fp2=NULL;
    FILE *fp3=NULL;
    char line[SIZE];
    if((fp1=fopen(argv[1],"r"))==NULL)
    {
        printf("file open error1\n");
        exit(1);
    }
    if((fp2=fopen(argv[2],"r"))==NULL)
    {
        printf("file open error2\n");
        exit(1);
    }
    if((fp3=fopen(argv[3],"a"))==NULL)
    {
        printf("file open error3\n");
        exit(1);
    }
    while(!feof(fp1))
    {
        fgets(line,SIZE,fp1);
        fputs(line,fp3);
    }
    while(!feof(fp2))
    {
        fgets(line,SIZE,fp2);
        fputs(line,fp3);
    }
    printf("\n%s %s를 합하여 %s를 작성하였습니다.\n",argv[1],argv[2],argv[3]);
    fclose(fp1);
    fclose(fp2);
    return 0;
}
cs







반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

문자열 동적 메모리  (0) 2017.02.21
양의 정수들의 합  (0) 2017.02.21
단어 바꾸기  (0) 2017.02.18
특정 단어 찾기  (0) 2017.02.18
텍스트 파일과 이진 파일  (0) 2017.02.17
반응형

두 개의 텍스트 파일을 서로 비교하는 프로그램을 작성하여 보자. 파일의 이름은 사용자에게 입력받는다. 만약 두개의 파일이 일치하면 "파일은 서로 일치함"을 출력하며 일치하지 않으면 일치하지 않는 첫 번째 문장을 다음과 같이 출력한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 100
int main(void)
{
    FILE *fp1;
    FILE *fp2;
    char a[SIZE];
    char b[SIZE];
    char f1[SIZE];
    char f2[SIZE];
    int bytes=0;
    printf("첫번째 파일 이름: ");
    gets(a);
    printf("두번째 파일 이름: ");
    gets(b);
    if((fp1=fopen(a,"r"))==NULL)
    {
        fprintf(stderr,"파일 열기 오류1\n");
        exit(1);
    }
    if((fp2=fopen(b,"r"))==NULL)
    {
        fprintf(stderr,"파일 열기 오류2\n");
        exit(1);
    }
    while(1)
    {
    fgets(f1,sizeof(f1),fp1); //fgets는 \n(개행문자) 나올 때까지 문자열을 받음 
    fgets(f2,sizeof(f2),fp2);
    if(strcmp(f1,f2)!=0// f1이 크면 양, f2가 크면 음, 같으면 0
    {
        printf("<< %s\n", f1);
        printf(">> %s\n", f2);
        break;
    }
    if(feof(fp1)!=0// 파일의 끝이면 not0, 끝이 아니면 0
    {
    printf("파일은 서로 일치함\n");
    break;
    }
    }
    return 0;
}
cs

만약 일치하지 않는 모든 문장을 나타내고 싶으면 strcmp 가 들어간 if 문에서 break; 만 빼주면 될 것이다.




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

인쇄 가능 문자 수 세기  (0) 2017.02.13
성적 평균 구하기  (0) 2017.02.12
fgets 함수  (0) 2017.02.11
파일 복사  (0) 2017.01.31
대문자로 변경  (0) 2017.01.31

+ Recent posts