C언어 공부하기/C언어 기초 공부

C언어 코딩 공부 #6 : string.h 의 함수들 (1) (strlen, strcpy, strcat)

HawordFREAKEK 2019. 3. 3. 18:12
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>
void main()
{
    char ss[10= "God";
    int a,b,c;
 
    char tt[100= "God Howard's Blog";
 
    a = strlen(ss);
 
    printf("%d 글자 입니다.\n", a);
    
    strcat(ss, "Haword");
 
    printf("이름은 %s 입니다.\n", ss);
 
    strcpy(ss, tt);
 
    printf("%s\n", ss);
}
cs


알아보시기 편하게 하드코딩으로 코딩했습니다. 이번에 소개시켜드릴 함수는 총 3가지 strlen, strcpy, strcat 입니다.
다음글에선 더 짧게 gets, puts 에 대해 적고 마지막으로는 나머지 string.h 함수에 대해 소개 시켜드릴 예정입니다.

일단 string.h 는 문자열 관련 쉽게 사용 가능하게 만들어주는 헤더라고 생각하시면 됩니다.


1. strlen

느낌오는 것 처럼 length , 즉 문자열의 길이를 구해주는 함수입니다.

 a = strlen(ss);

저는 주로 이런 형식으로 사용하는데 , 이렇게 사용하시면 a라는 변수에, ss라는 문자열의 길이만큼이 저장됩니다. 위 예제를 보시면 God 은 3글자이기 때문에 a에는 3이 저장되어 12번째 줄에선 3글자 입니다가 출력됩니다.

(자세하게 설명드리면, 글자단위가 아니라 바이트로 계산하기 때문에 글자수라고 하면 정확한 설명이 아닙니다. 하지만 설명을 위해 저렇게 이야기했습니다. 바이트 단위이기 때문에 한글을 치면 2단어로 취급합니다.)


2. strcat

리눅스 언어에도 cat 관련된게 있는데 거기선 고양이가 뭘 물어오는 것처럼 관련 값을 물어옵니다.
C언어에서는 고양이가 꼬리에 꼬리를 물어 이어져있다고 생각하시면 편합니다.

strcat(A, "B");

이렇게 쓰시면 원래 문자열이 저장되있던 문자형 변수 A에 B라는 문자가 붙어 바뀐 형태로 A에 다시 저장됩니다.

14번째 줄을 보시면, ss 라는 변수 뒤에, "Haword" 라는 문자가 이어지기 때문에, 16번째 줄에 의해 출력될 문장은 "GodHaword"라는 것을 알 수 있습니다.


3. strcpy

strcpy 는 문자열 copy라고 생각하시면 편합니다. 

    strcpy(ss, tt);

이렇게 적으시면 ss에 저장되있던 정보는 사라지고, tt에 있던 정보가 ss로 덮어씌워지는 결과를 보실 수 있습니다.
그렇기에 18번째 줄에 보시면, "God"이라고 저장되있던 ss 지만 strcpy때문에 최종적으로는 20번째 줄에, "God Howard's Blog" 가 출력된다는 것을 예상 할 수 있습니다.



가끔하다가 strcpy, strcat 관련해서 (A,B) 이렇게 있으면 뭐가 어디서 어디로 상호작용하는지 헷갈릴수 도 있습니다. 그럴 땐 C언어 컴파일은 무조건 위에서 아래로, 앞에서 뒤로 컴파일 된다고 생각하시면 예상하기 편합니다. 그래도 이해가 안 간다면 차선은 검색이고, 최선은 디버깅으로 확인하며 외우는 거라고 생각됩니다. 다른 강좌같은거 찾아보면 디버깅이 초중반에 위치하던데 전 디버깅이 꽤 어렵고, 앞서 기본적인 코딩은 할 줄 알아야 디버깅하는것도 효율이 생긴다고 생각되서 디버깅 관련 설명은 뒤로 미루겠습니다.






이렇게 간단하게 변수선언과, string.h 에 들어가는 함수에 대해서 알아보았습니다.

더 자세한건 예제문제에서 자세히 설명해드리겠습니다.

궁금하신점은 댓글로 부탁드려요 ㅎㅎ