반응형

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


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
반응형

간단한 "찾아 바꾸기" 기능을 구현하여 보자. 첫 번째로 사용자에게 최대 80 문자의 문자열을 입력하도록 한다. 두 번째로 찾을 문자열을 입력받는다. 세 번째로 바꿀 문자열을 입력받는다. 문자열을 찾아서 바꾼 후에 결과 문자열을 화면에 출력한다.

//개인적으로 최고로 어려웠던 문제네요.. 오래걸렸습니다. 



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
#include <stdio.h>
#include <string.h>
#define SIZE 80
int main(void)
{
char a[SIZE]="";
char find[15]="";
char change[15]="";
char seps[]=" ";
char b[10][20];
char *token;
int j,count;
count=0;
printf("문자열을 입력하세요: ");
gets(a);
printf("찾을 문자열: ");
gets(find);
printf("바꿀 문자열: ");
gets(change);
token=strtok(a,seps);
while(token!=NULL)
{
    strcpy(b[count],token);
    count++;
token=strtok(NULL,seps);
}
for(j=0;j<count;j++)
{
if(strcmp(b[j],find)==0)
    {strcpy(b[j],change);
break;}
}
printf("결과: ");
for(j=0;j<count;j++)
{
printf("%s ",b[j]);
}
printf("\n");
return 0;
}
cs




참고로 제 코드 말고도 인터넷에 찾아보니 좋은 코드가 있어서 공유하고자 합니다.

http://blog.naver.com/misoo12/100147994737


반응형

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

포인터 평면 위의 점  (0) 2016.12.27
좌표 일치 확인  (0) 2016.12.27
전광판 만들기  (0) 2016.08.22
문자열로 연산하기  (0) 2016.08.22
구두점 개수 세기  (0) 2016.08.21
반응형

사용자에게 질문을 제시하고 답변을 받아서 긍정이면 1을 반환하고 부정이면 0을 반환하는 함수 get_response(char *prompt)를 작성하고 테스트하라. 여기서 매개변수 prompt는 사용자에게 제시하는 질문이다. 긍정을 의미하는 문자열은 "yes", "ok"로 가정하라. 부정을 의미하는 문자열은 "no"로 가정하라. 대소문자는 구별하지 않도록 하라.

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
#include <stdio.h>
#include <string.h>
#define SIZE 30
int get_response(char *prompt);
int main(void)
{
    char a[SIZE]="";
    int x=0;
    while(1)
    {
printf("게임을 하시겠습니까?(나가기는 quit)");
x=get_response(a);
if(x==1)
printf("긍정적인 답변\n");
else if(x==0)
    printf("부정적인 답변\n");
else if(x==-1)
    break;
else
    printf("잘못된 입력입니다.\n");
    }
return 0;
}
int get_response(char *prompt)
{
gets(prompt);
if(strcmp("yes",prompt)==0||strcmp("YES",prompt)==0||strcmp("ok",prompt)==0||strcmp("OK",prompt)==0)
    {return 1;}
else if(strcmp("no",prompt)==0||strcmp("NO",prompt)==0)
    {return 0;}
else if(strcmp("quit",prompt)==0)
    return -1;
else
    return -2;
}
cs




반응형

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

문장 교정  (0) 2016.08.20
단어 수 계산  (0) 2016.08.20
대소문자 변환기  (0) 2016.08.20
문자열내 문자 빈도수  (0) 2016.08.20
문자열 속의 문자 개수 세기  (4) 2016.08.19

+ Recent posts