C언어에는 문자열을 직접 선언하는 방법이 없다. 따라서 배열이나 포인터를 사용해 문자열을 처리한다.
배열을 사용해 문자열을 처리하는 방법은
abcdefgh123123.tistory.com/31?category=939526
여기에 정리해 두었다.
포인터를 활용해 문자열 처리하기
문자는 1바이트 크기의 char에 저장할 수 있지만 문자열은 크기가 1바이트를 넘어서므로 char에 저장할 수 없다. 따라서 문자열은 변수에 직접 저장하지 않고 포인터를 이용해서 저장한다.
●코드 예제
#include <stdio.h>
int main()
{
char character = 'A'; // 변수에 문자 'A' 저장
char *string = "Hello"; // 포인터에 문자열 "Hello"의 주소 저장
printf(" character: %c\n", character); // A: %c로 문자 출력
printf(" string: %s\n", string); // Hello: %s로 문자열 출력
return 0;
}
string 포인터 변수에는 문자열 "Hello"의 메모리 주소 값 하나만이 저장된다.
문자열을 출력할 때는 서식 지정자로 %s를 사용, *string이 아닌 string 사용하여 문자열을 출력한다.(*string을 사용하면, 메모리 주소가 나온다)
저번 강에서 다룬 역참조 *의 사용법과는 약간 다르다. 그냥 문자열은 다르게 쓰이는구나 하고 넘어가자.
문자열 포인터에서 인덱스로 접근하기
●인덱스 접근 코드 예제
#include <stdio.h>
int main()
{
char* string = "Hello"; // 포인터에 문자열 "Hello"의 주소 저장
printf("hello의 두번째 글자: %c\n", string[1]);
printf("hello의 null : %c\n", string[5]); //null은 출력안됨.
return 0;
}
문자열 포인터를 index로 접근하면 문자 char과 같기에 % c를 사용한다.
*주의사항
index에 string [1] = 'A' 이런 식으로 대입할 수 없다.
문자열이 있는 메모리 주소는 Only "읽기 전용"이기 때문이다.
'프로그래밍 언어 > C' 카테고리의 다른 글
C언어 20강) void 포인터 (0) | 2020.11.06 |
---|---|
C언어 19강 ) 다양한 자료형의 포인터 (0) | 2020.11.06 |
C언어 18강)+ 포인터 변수 역참조 (0) | 2020.11.06 |
C언어 18강 쉽게 이해하는 주소와 포인터 설명 (0) | 2020.11.05 |
C언어 17강 다차원 배열 (0) | 2020.11.05 |