[C언어] 문자열 처리 함수 strcpy() , strcat(), strcmp(), strlen()
COM2008. 7. 1. 11:52 |strcpy() string copy 문자열 복사
헤더파일: string.h 문자열 함수 헤더
프로토타입: char* strcpy( const char* , const char* );
두번째 인자인 문자열을 첫번째 인자인 문자열에 덮어쓰기로 카피한다.
리턴값: 첫번째 인자인 문자열
첫번째 인자에서 확보된 메모리가 두번재 인자의 크기보다 작지않아야 한다.
문자 배열(문자열상수)의 경우 초기화 선언을 제외하고는 직접 배정문으로 문자열을 집어넣을수가 없다.
즉,
char arr[100]; 으로 선언되어 있는 상태에서
arr = "Hello! Nice to meet you."; 는 에러이다.
두번째 줄이 에러가 되는 과정은 다음과 같다ㅏ.
1. 첫번째 줄의 배열 선언에서, 메모리 100바이트를 잡는다.
2. arr 은 그 메모리의 시작 주소이다. (상수로서 이후에 변경이 불가하다)
3. 두번째 줄에서 우선 문자열상수 "Hello! Nice to meet you." 를 어딘가에 저장한다.
4. 그 주소를 arr 에 대입하려고 한다. 즉 arr 를 그 주소로 포인팅 하려고 하나, arr이 상수이므로 변경이 불가하여 에러가 난다.
이럴때 다음과 같이 strcpy() 를 사용할 수 있다.
strcpy(arr,"Hello! Nice to meet you.");
strcpy()의 프로토타입에서 보듯이, 인자들은 const char* 이다. 즉, 포인터 자체를 변화시키지 않는다. 단지, 포인터가 가리키는 위치를 받고, 그 위치에서 한칸씩 이동하며 문자를 복사하는 행위를 하는 함수이다. 이 행위는 널문자를 만날때까지 계속된다.
---------------------------------------------------------------------------------------------------
strcat() string catenate ( string concatenate ) 문자열 덧붙이기
헤더파일: string.h
프로토타입: char* strcat( char* , const char* );
두번재 인자인 문자열을 첫번째 문자열에 덧붙인다.
리턴값: 첫번째 문자열
첫번째 문자열의 널문자 위치에 두번째 문자열의 첫글자가 덮어지며 이어붙여진다. 첫번째 인자는 두번째 문자열이 붙을 만큼의 충분한 공간이 확보되어있어야한다.
---------------------------------------------------------------------------------------------------
strcmp() string compare 문자열 비교
헤더파일: string.h
프로토타입: int strcmp(const char*, const char*);
첫번째 문자열과 두번재 문자열을 사전적 순서로 비교(렉시코그래피컬리) 하여, 첫번째가 크면 양수, 작으면 음수, 같으면 0 을 리턴한다.
---------------------------------------------------------------------------------------------------
strlen() string length 문자열 길이
헤더파일: string.h
프로토타입: size_t strlen(const char*)
NULL 문자를 뺀 문자의 개수를 리턴한다. size_t 형은 4바이트 int 시스템에서는 unsigned int 이고, 2바이트 int시스템에서는 unsigned long 이다.