문자열

이지우·2022년 10월 12일
0

C언어

목록 보기
10/17

문자열: 메모리에 저장된 일련의 연속된 문자(character)들의 집합

" " 를 사용하여 표현한다.

문자열 초기화와 출력

C언어에서는 문자형(char) 배열을 이용하여 저장한 것을 말한다.
이때 마지막 값에 null을 넣게된다. (문자열의 끝을 알아보기 위해)

char str01[] = "This is a string.";    
// 크기를 지정하지 않아도 알아서 크기가 지정됨 (문자 개수 + 1(NULL))

char str02[7] = "string";	// 크기를 지정한 문자열 변수 선언

char str03[] = { 'a', 'b', 'c', '\0' };	// '\0' == NULL

▼ 빈 배열로 초기화 방법

char str[30] = {'\0'};		// 널 문자로 초기화

char str[30] = {0};			// 널 문자의 아스키코드 값으로 초기화

char str[30] = "";			// 큰따옴표 안에 아무것도 없으므로 널 문자로 초기화

char str[30];
str[0] = '\0';				// 첫 번째 배열 요소만 별도로 초기화

문자열의 출력은 %s를 사용한다.

char str[] = "string";
printf("%s", str);

printf(str);	// 이렇게 써도 출력 가능함

NULL문자

널문자는 문자열의 끝이 어디인지 알아보기 위해 꼭 넣어주어야 한다.
이를 이용하여 문자열의 길이를 구할 수 있다.

int str_len = 0;
char str[] = "string";

while (str[str_len] != '\0') {// 널 문자가 나올 때까지 반복
    str_len++;
}

printf("이 문자열의 길이는 %d입니다.\n", str_len);

이때 널문자의 아스키코드 값은 0으로 조건식에 '\0' 대신 0을 사용해도 된다.


배열 특성 이용

문자열은 문자형의 배열이므로 원소 값에 접근하거나 값을 변경할 수 있다.

printf("%c\n", "This is a string"[2]);	// i 가 출력됨

char str[] = "house";
str[0] = 'm';

문자열 상수

문자형 포인터 변수에 직접 문자열을 저장한다. (문자열의 시작 주소가 저장된다.)
이 포인터 변수 값을 읽어오는 것은 가능하지만 각 원소에 접근하여 값을 변경하는 것은 불가능하다.
(여기에서 포인터가 가리키고 있는 곳이 변수가 아니라 주소이기 때문에 주소값을 연산할 수 없다.)

char *pstr = "Good Day";

pstr = "Bye";	// 가능

pstr[1] = 'i';	// 불가능

문자열 상수가 아닌 포인터 사용

이 경우에는 각 원소에 접근 가능함

void main()
{
      char s[] = “hello”;
      char *ptr;
      ptr = s;
      while (*ptr != ‘\0)
      {
          printf(%c“, *ptr);
          ptr++;
      }
      printf("\n");
}
profile
노력형 인간

0개의 댓글