1. [C 언어] 문자, 문자열의 표현 구분
ㅇ 작은따옴표 ' ' => 문자 표현
- 例) char a,b,c; a = 'A'; b = 65; c = '\x41'; => a,b,c 모두 문자 'A'를 나타냄
. 'A'는 ASCII 코드에서 10진수 65, 16진수 41 임
ㅇ 큰따옴표 " " => 문자열 표현
- 例) char char d[] = "ABC"; => d가 문자열 "ABC"를 나타냄
2. [C 언어] C 문자열의 특징
ㅇ C 문자열의 자료형 => 따로 '없음'
- 타 언어와 달리, C 언어는, 문자열 자체를 처리하기 위한 별도의 자료형을 제공하지 않음
. 따라서, C 문자열 처리는 불편하고 신경이 많이 쓰이는 작업임
.. 주로, 미리 정해진 문자열 함수 만을 사용함
ㅇ C 문자열의 저장 형태
- 종료 널 문자(\0 또는 NUL)로 끝나는 char형 배열
ㅇ C 문자열의 사용 형태
- 문자열 데이터가 메모리에 연속적으로 보관되므로, 주소를 갖게 됨
- 즉, 포인터 사용 가능
3. [C 언어] C 문자열의 변수
ㅇ 배열 변수 또는 포인터 변수에 문자열 값의 지정
ㅇ 구분
- char형 배열 변수 : 例) char str[] = "ABC";
. 배열에 의한 문자열 접근은, 읽기,쓰기 모두 가능
. 단, 문자열 변경은 낱개 문자 단위로 가능 : ch[0] = 'D',ch[1] = 'E' 등
. 즉, 문자열 배열 변수는, char str[] = {'A','B','C','\0'} 형태로 저장된 것임
- char형 포인터 변수 : 例) char *p_str = "ABC";
. 포인터에 의한 문자열 접근은, 읽기전용이므로, 초기화 이외에는 쓰기 허용 안됨
. 즉, 낱개 문자 단위로도 변경 불가
. 그 이유는, 런타임 메모리 상에 읽기 전용의 데이터 세그먼트(정적 영역)에 저장되기 때문임
- 문자열들의 배열 변수 : char *argv[];
4. [C 언어] C 문자열의 함수 ☞ C 문자열 함수 참조
ㅇ 입출력 (stdio.h) : gets(), fgets(), puts(), fputs(), scanf(), printf() 등
ㅇ 처리 (string.h) : strlen(), strcmp(), strcpy(), strcat(), strtok() 등
- strcpy(s2,s1) : s1의 문자열을 s2에 복사
. 문자열을 다른 배열이나 포인터(메모리)로 복사 가능
.. 단, 복사될 위치에 저장 공간 사전 확보 필요