문자열을 입력받는다고 하였을 때 나는 C에는 파이썬과 같은 것들이 없다고 생각해 반복문을 사용해서 배열[0] 에 문자 하나.. 배열[1] 에 문자 하나.. 이렇게 하곤 했었는데 찾아보니 C에도 문자열을 다룰 수 있는 방법이 있었다 ㅠ
문자열 변수의 선언과 초기화
변수를 사용함에 있어서 선언과 초기화는 굉장히 중요하다.
C에는 파이썬처럼 문자열 자체를 하나의 자료형으로 지원하는 것은 없으나
문자열을 "문자배열" 로 나타내는 것이 가능하다고 한다.
따라서 C에서 문자열 변수 == 문자 배열 로 처리한다.
문자열 변수의 선언은 char형 배열의 선언과 같다.
char string_name[size];
크기를 지정한 문자 배열
다음과 같이 사용할 수 있다.
char city[9] = "NEW YORK";
char city[9] = {'N', 'E', 'W', ' ', 'Y', 'O', 'R', 'K', '\0'};
이렇게 NEW YORK이라는 문자열이 8개의 문자를 가지고 널 문자라는 한 개의 배열요소가 더해진다.
크기를 지정하지 않은 문자 배열
char string[] = {'G', 'O', 'O', 'D', '\0'};
위처럼 문자배열의 크기를 지정하지 않고 문자배열을 초기화할 수 있다.
각 배열요소를 지정하는 방식으로 문자배열을 초기화할 때에는 널 문자가 명시적으로 꼭 표시되어야 한다.
이 배열은 자동으로 5개의 요소를 가지는 배열이 된다.
문자열의 길이보다 큰 문자 배열
또한 문자열의 길이보다 큰 문자배열을 생성하게 되면 남는 자리에는 널 문자가 함께 들어가게 된다.
char string[10] = "GOOD";
이런 식으로 문자배열을 생성하면,
G | O | O | D | \0 | \0 | \0 | \0 | \0 | \0 |
이렇게 들어가게 된다.
널 문자의 필요성
배열은 고정된 크기를 가지는 저장소이나, 저장되는 문자열은 그 크기가 일정하지 않을 수 있다.
문자배열의 크기가 저장된 문자열의 크기와 동일하지 않을 수도 있고 배열의 크기가 문자열의 크기보다 클 수도 있다.
이때 문자열 데이터의 마지막을 표현할 방법으로 널 문자가 사용되는 것이다.
문자열을 출력하는 방법
char java[] = "Java";
printf("%s", java);
%s를 사용해주고 배열명을 입력해주면 문자열 출력이 바로 가능하다.
'C' 카테고리의 다른 글
[C] 배열 포인터, 포인터 배열 (0) | 2023.10.26 |
---|---|
[C] 포인터와 함수 (0) | 2023.10.26 |
[C] 포인터와 다차원 포인터 (0) | 2023.10.24 |
[C] 조건 연산자 (삼항 연산자) 백준 2562 (0) | 2023.09.11 |
[C] 백준 2577 (0) | 2023.06.26 |