[c] 문자열의 기본

mj·2022년 6월 12일
0

[C] 알고리즘

목록 보기
18/20
post-thumbnail
post-custom-banner

문자열이란?

프로그램에서 문자의 '나열'을 표현한 것
빈 문자열도 문자열이다.

문자열 리터럴의 끝을 나타내기 위해 NULL 문자열을 자동으로 추가

문자열 리터럴의 특징

  • 문자열 리터럴의 자료형은 char형 배열
  • 문자열 리터럴의 메모리 영역 기간 == 정적 메모리 영역의 기간
    프로그램의 시작부터 끝까지 메모리 영역이 유지된다.
  • 같은 문자열 리터럴이 여러 개 있는 경우, 컴퓨터에서 처리하는 방법은 컴퓨터의 환경에 따라 다름
    - 각각 다른 메모리 영역에 두는 컴퓨터 환경
    - 동일한 영역에 넣어두고 공유하는 컴퓨터 환경
  • 상수의 성질을 갖는 문자열 리터럴은 변수가 아니라 상수의 성질을 갖고 있음. 문자열 리터럴이 저장된 메모리 영역에 값을 대입할 수 없음.


st[5]에 다른 문자넣어도 인식 안됨.

문자열 초기화 선언 : 2가지 방식

  • char st[10] = {‘A’, ‘B’, ‘C’, ‘D’, ‘\0’ };
  • char st[10] = “ABCD”;

❗️틀린 방법 :

char st[10];
st = { ‘A’, ‘B’, ‘C’, ‘D’, ‘\0};
st = “ABCD”;

요소의 개수를 생략하고 문자열을 선언한 경우

char st[] = "ABCD";
배열 st의 요소개수는 몇개? -> 5개 (A,B,C,D,null)

포인터와 문자열

c언어에서는 보통 포인터로 문자열을 나타낸다.
char *pt = "12345";

포인터로 표현한 문자열 = 문자열 리터럴을 저장하기 위한 영역 + 포인터가 갖는 메모리 영역
예)

char st[] =12345; 
     /* 배열에 의한 문자열의 크기는 6 bytes */

 char *pt =12345; 
     /* 포인터에 의한 문자열의 크기는 sizeof(char *) + 6 bytes */

문자열 리터럴을 가리키는 2 포인터의 값을 서로 교환하기

매개변수 x, y의 자료형은 포인터(s1, s2)의 주소를 받아야 하므로 char **형으로 정의 (포인터를 가리키는 포인터)


문자열의 길이

  • 배열 전체를 문자열로 사용하지 않는다.

strlen 함수 : 문자열 길이

strchr 함수 : 문자열 검색

문자열 s에서 가장 앞쪽에 있는 c를 찾는다.
문자가 없으면 널 포인터 반환

strrchr 함수 : 문자열 검색

문자열 s에서 가장 뒤쪽에 있는 c를 찾는다.
문자가 없으면 널 포인터 반환

strcmp 함수 : 문자열 비교

문자열 s1, s2의 대소관계를 비교

문자열이 같으면 0
s1이 s2보다 크면 양의 정수
s1이 s2보다 작으면 음의 정수

strncmp 함수 : 문자열 비교

s1, s2의 n번째 문자까지의 대소관계를 비교

문자열이 같으면 0
s1이 s2보다 크면 양의 정수
s1이 s2보다 작으면 음의 정수

profile
일단 할 수 있는걸 하자.
post-custom-banner

0개의 댓글