본문 바로가기

IT전공관련

strcpy, strlen, strcmp 총정리 보고서

3가지 함수정리


1. strcpy 함수 소개


이 함수는 문자열 전체를 복사하는


역할을 합니다. 

이 함수를 쓸때 주의 할점은 바로

문자열을 다루는 함수이기 때문에


<string.h>를 꼭 포함 시켜줘야 합니다.


ex)#include<string.h>


그럼 바로 예제에 들어가봅시다


1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
#include<string.h>
 
int main() {
 
    char num1[10= "Hello";
    char num2[10];
 
    strcpy(num2, num1);
    printf("%s\n", num2);
    
 
    return 0;
}
cs

이렇게 입력하면 

그대로 Hello가 출력 됩니다.

그럼 조금 더 심화로 가봅시다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
#include<string.h>
 
int main() {
 
    char num1[10];
    char num2[10];
 
    gets(num1);
    strcpy(num2, num1);
    printf("%s\n", num2);
    
    return 0;
}
cs

이렇게하면

Hello를 입력했을때 똑같이 Hello가

복사 되어 나옵니다.

이걸 for문으로 고치면

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
 
int main() {
    char go[10];
    char num[10];
    int a;
    int j;
    int i = 0;
 
    gets(go);
    for (a = 0; go[a] != '\0'; a++) {
         num[a] = go[a];
         i++;//i의 값이 종료조건까지 커짐
    }
        for (j = 0; j <= i; j++) {
            printf("%c", num[j]);
        }
printf("\n");
    return 0;
}
 
cs

이렇게 됩니다!!


2.strlen함수소개


이것은 문자의 길이를 측정해 주는 함수로

이것 또한 <string.h>를 포함시켜준다.

바로 예제를 들어가보자

우린 이제 까지 무언가의 길이를 측정할때 sizeof 함수를

사용 했었다. 하지만 이 함수와 strlen함수는 큰차이가 있다.

예시를 들어 보자.

1
2
3
4
5
6
7
#include<stdio.h>
 
int main() {
    char a[5= "ace";
    printf("%d\n"sizeof(a));
    return 0;
}
cs

먼저 이렇게 입력하면 

이렇게 뜬다.하지만 strlen을 입력하면,

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
#include<string.h>
 
int main() {
    char a[5= "ace";
    printf("%u\n", strlen(a));
 
    return 0;
}
 
cs

이렇게 뜬다 그이유는 sizeof는 a의 메모리의 크기를

출력하는 반면 strlen은 a의 문자열의 길이 즉

ace의 길이를 출력하기 때문이다.

(*strlen은 부호없는 10진 정수를 가르키는 %u를 쓴다.)


이것을 이용해서 예제를 만들어본다면

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
#include<string.h>
 
int main() {
    char num[50];
    
    gets(num);
    printf("%d", strlen(num));
    return 0;
}
 
cs

이렇게 만들수 있다 이것을 이용하면 사용자가

입력한 문자열의 길이를 알수있다.

이것을 또 for문으로 바꾸면,

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
 
int main() {
    char num[30];
    int i;
 
    gets(num);
    for (i = 0; num[i] != '\0'; i++) {
    }
    printf("문자의 길이 = %d", i);
 
    return 0;
}
cs

이렇게 쓸수있다


3. strcmp함수 소개


이 함수는 두 문자열을 비교 할때 사용한다.

당연하듯이 <string.h>를 사용한다.

바로 예제로 들어가 보자.

우린 먼저 무언가를 비교할때 if문을 쓴다.

예를 들어 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
 
int main() {
 
    char num[10= "yocheck";
    char go[10= "yocheck";
 
    if (num == go)
        printf("둘은 아주 놀랍게도 동일하다\n");
    else
        printf("둘은 아주 놀랍게도 다르다\n");
    
 
    return 0;
}
cs

이렇게 말이다.  그래서

우리의 예상대로라면, 1번째 if문이 출력될것이다

but 이것을 실행해보면

 

이렇게 뜬다. 그 이유는 바로 그냥 "=="는  go와 num의

주소값을 비교하기 때문이다.

따라서 우리가 원하는 문자열을 비교하기 위해서는 바로

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
#include<string.h>
 
int main() {
 
    char num[10= "yocheck";
    char go[10= "yocheck";
 
    if (!strcmp(num, go))
        printf("둘은 아주 놀랍게도 동일하다\n");
    else
        printf("둘은 아주 놀랍게도 다르다\n");
    
 
    return 0;
}
cs

이렇게 해야한다(strcmp함수는 문자열이 같을때 0을

 출력하므로 앞에 !(not)을 붙여 줘야 한다!! 물론 다르게 

하는 방법도 다양하게 존재한다)

이렇게 하면 

이렇게 뜬다.

이것을 통해 예제를 만들어보자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
#include<string.h>
 
int main() {
 
    char num[10];
    char go[10];
 
    printf("입력");
    gets(num);
    printf("입력");
    gets(go);
    if (!strcmp(num, go))
        printf("둘은 아주 놀랍게도 동일하다\n");
    else
        printf("둘은 아주 놀랍게도 다르다\n");
    
 
    return 0;
}
 
cs

사용자에게 받은 문자열이

같은지 비교해준다.(이것을 이용해 정보가 맞는지

확인 가능하다)

이것을 for문으로 구현하면

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
#include<stdio.h>
int main() {
    char num[30];
    char go[30];
    int i, j;
    int a = 0;
    int y = 0, x = 0;
 
 
    printf("입력");
    gets(num);
    printf("입력");
    gets(go);
 
    for (i = 0; num[i] != '\0'; i++)
        y++;
    for (j = 0; go[j] != '\0'; j++) {
        if (num[j] == go[j] || x == y) {
            x++;
        }
    }
    if (x == y)
        printf("두문자는 같습니다\n");
    else
        printf("두문자는 다릅니다\n");
 
    return 0;
}
cs

이렇게 된다


4. 총정리


strlen는 문자열의 길이를 측정

strcpy는 문자열을 복사

strcmp는 문자열 비교에 쓰인다! 


'IT전공관련' 카테고리의 다른 글

포인터 보고서  (0) 2017.04.06
100제 풀기  (0) 2017.04.05
배열 숙제  (0) 2017.03.29
배열 달팽이  (0) 2017.03.29
함수 정리 보고서  (0) 2017.03.28