목차
strcpy
char* strcpy(char* destination, const char* origin);
- 헤더파일 : <string.h>
- return : dest
- 문자열을 복사하는 함수로 origin에 있는 문자열 전체를 dest로 복사하는 함수
strncpy
char* strncpy(char* dest, const char* origin, size_t n);
- strcpy와 같이 동작하는데, 문자열을 n만큼만 복사하는 함수
- origin 문자수가 n 보다 적다면, 모자란 부분은 0으로 생각되어 dest에 복사된다.
- *** strncpy 함수는 복사시 dest 끝에 반드시 NULL 문자를 붙이는 것이 아니다.
strlcpy
size_t strlcpy(char *dest, const char *src, size_t size);
- return : dest 길이
- strcpy와 똑같은 동작을 수행하는데 대상 버퍼를 오버플로우 할 수 없는 보안 버전으로 대체하기 위한 것을 목적으로 strcpy를 대신해 나온 함수다.
- src에서 dest로 size만큼 복사하고 src 길이를 return 한다.
- size는 문자열에 NULL까지 포함한 숫자를 넣어줘야 한다. 따라서 size-1 만큼 복사되고 끝에 NULL로 끝나는 것이다.
- 만약 size가 1일경우 dest엔 NULL만 들어가 있다.
strcmp
int strcmp(const char* str1, const char* str2)
- 매개변수로 들어온 두 개의 문자열을 비교하는 함수
- return :
- str1 < str2 -> 음수 반환
- str1 > str2 -> 양수 반환
- str1 == str2 -> 0 반환
- 각 문자는 아스키 코드값으로 비교한다.
- 윈도우에서만(?) 0, 1, -1로 반환가능
다른데선 차이값을 반환해줘야한다고 한다.
strncmp
int strncmp(const char* str1, const char* str2, size_t n);
- strcmp와 같은 동작을 수행하는데 n만큼만 비교한다.
strcat
char* strcat(char* dest, const char* origin);
- return : dest
- origin문자열을 dest 뒤쪽에 이어 붙이는 함수다.
- dest 문자 끝에있는 '\0' 문자가 사라지고 이어 붙는 것이다.
- 합친 문자열의 끝에는 '\0'가 들어간다.
strncat
char* strncat(char* dest, const char* origin, size_t n);
- origin에 있는 문자열 n개를 dest뒤에 이어 붙인다.
- 합친 문자열의 끝에는 '\0'가 들어간다.
strlcat
size_t ft_strlcat(char *dest, const char *src, size_t destsize);
- strncat과 같은 동작을 수행하는데 보안 목적으로 strncat을 대신하기 위해 만들어진 함수
- destsize만큼의 대상 버퍼사이즈를 가진다.
- 여기서 destsize = dest길이 + 붙여넣을 문자열길이 + null 값이어야 한다.
dest size dest_len src_len NULL - 즉 dest에 이어붙이는 src 길이는 (size - dest길이 - 1) 이라는 소리다.
- return :
- dest의 길이를 반환 (NULL은 세지 않는다.) : dest 길이 + src 길이
- dest길이 < destsize -> src길이 + destsize 반환
- dest길이 >= destsize -> dest길이 + src길이 반환
strstr
char* strstr(char* str1, const char* str2);
문자열에서 문자열을 찾는 함수
str1에서 str2와 일치하는 문자열이 있는지 찾는 함수
return :
- 찾으면 : 일치하는 문자열의 해당 위치 포인터 반환
- 못 찾으면 : NULL pointer 반환
- str2가 NULL이면 str1 반환
strlen
size_t strlen(const char* str);
- 문자열을 받아 그 문자열의 길이를 반환하는 함수
- 정확히는 char*가 가리키는 주소에서부터 '\0' 문자가 나올 때까지의 문자들의 개수
strdup
char *strdup(const char *s)
- 문자열 s 길이 + 1 크기를 malloc으로 할당후, 문자열 s를 복사한 후 return
- return : 저장공간에 대한 포인터
- 문자열 s 길이 +1 크기를 malloc으로 할당 후 문자열 s를 복사한 후 return 한다.
- strdup은 할당할 메모리가 부족할 때 NULL을 반환한다.
참고 URL
'42SEOUL' 카테고리의 다른 글
[C] malloc (0) | 2021.10.26 |
---|---|
[C] 전처리기, main() (0) | 2021.10.26 |
[C] 포인터 (0) | 2021.10.12 |
[C] extern (0) | 2021.10.09 |
[Linux / shell] 명령어2 (0) | 2021.10.08 |