Chapter. 6

김동현·2022년 10월 11일
0
post-thumbnail

널 문자의 용도

초기화한 문자들은 배열의 처음부터 차례로 저장되어 문자열을 만든다. 이때 남는 배열 요소에는 자동으로 0이 채워지는데, 이를 널 문자라고 한다. 널 문자는 문자열의 끝을 표시하는 용도로 쓰인다.
 

<string.h>

#include <stdio.h>

#include <string.h> → <string.h>는 문자열 관련 함수의 원형을 모아둔 헤더파일이다.

<string.h>는 strcpy함수에 접근하기 위해 사용한다.

srtcpy(저장될 배열명, 저장할 문자열); → srtcpy(str1, “tiger”);

위의 경우 str1에 tiger을 대입하겠다는 말이다. 첫번째 인수인 str1은 문자열을 저장할 수 있도록 커야한다.

또한 첫번째 인수에는 문자열 상수를 사용할 수 없다. 상수는 바뀌지 않는 값이기 때문이다.

#include <stdio.h>
#include <string.h>                     // 문자열 관련 함수 원형을 모아놓은 헤더 파일

int main(void)
{
    char str1[80] = "cat";
    char str2[80];

    strcpy(str1, "tiger");              // str1 배열에 "tiger" 복사 
    strcpy(str2, str1);                 // str2 배열에 str1 배열의 문자 복사    
    printf("%s, %s\n", str1, str2);

    return 0;
}

  

문자열 전용 입출력 함수: gets, puts

char형 배열에 문자열을 대입하는 경우에는 strcpy 함수가 훌륭히 수행한다. scanf 함수의 경우char형 배열에 문자열을 입력할 수 있지만, 중간에 빈칸이 있는 경우 빈칸 전까지만 값을 입력한다.

따라서 빈칸을 포함할 수 있는 새로운 문자열 입력 방식이 필요하다. 이때 put함수와 get함수를 활용할 수 있다.

#include <stdio.h>

int main(void)
{
    char str[80];

    printf("문자열 입력 : ");        // 입력 안내 메시지 출력
    gets(str);                    // 빈칸을 포함한 문자열 입력
    puts("입력된 문자열 : ");        // 문자열 상수 출력
    puts(str);                    // 배열에 저장된 문자열 출력

    return 0;
}

  

빈칸을 포함하여 문자열을 입력하는 gets 함수

gets 함수는 문자열 입력 중간에 빈칸이나 탭 문자를 사용할 수 있으며, Enter을 누르기 전까지의 전체를 하나의 문자열로 배열에 저장한다. 문자열 마지막에 널문자를 입력하여 문자열의 끝에 표시한다.

그러나! gets 함수는 입력할 배열의 크기를 검사하지 않으므로 배열의 크기보다 더 긴 문자열을 입력하면 메모리 영역을 침범할 수 있다는 것이다.

profile
디자인과 개발을 모두 할줄 아는 능력있는 개발자가 되고싶습니다.

0개의 댓글