42SEOUL

[C] str 함수

daykim 2021. 10. 12. 17:06

목차

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