Programming Language/C언어

[C언어] 문자열 함수, 문자 함수

lxvxxu 2024. 7. 9. 23:30

※ 요약

- strlen() : 문자열 크기

- strcpy() : 문자열 초기화

- strcat() : 문자열 뒤에 다른 문자열을 붙임 (string concatenation)
- strcmp(), strncmp() : 문자열 비교 함수

위 함수들을 이용하기 위해서는 #include <string.h>해야 한다.

 

- isalpha() : 알파벳(a ~ z or A ~ Z) ? 1 : 0

- isdigit() : 숫자 ? 1 : 0

- isupper() : 대문자 ? 1 : 0

- islower() : 소문자 ? 1 : 0

- toupper() : 인수를 대문자로 변환

- tolower() : 인수를 소문자로 변환

위 함수들을 이용하기 위해서는 #include <ctype.h>해야 한다. (문자를 검사하는 라이브러리 함수)

문자열 배열의 크기를 알아보기 위한 방법 2가지

1) sizeof()

int len = sizeof(str)/sizeof(char) - 1;

 

위와 같은 방식으로 활용하면 된다.

sizeof(str)/sizeof(char) 까지는 배열의 크기를 계산하고 -1을 함으로써 배열 마지막 요소(element)에 들어가는 '\0 (NULL문자)'의 크기를 제거하여 최종적으로 문자열의 크기를 산출한다.

(NULL 문자는 문자열의 끝을 표시하긴 하지만 문자열의 일부는 아니기 때문이다.)

NULL 문자
C는 문자열의 끝을 0으로 표시한다.
C가 자동적으로 NULL 문자(\0, 백슬래시 0)를 추가한다. 
우리는 NULL 문자를 볼 수 없지만 메모리 상에 존재한다.
C는 NULL 문자를 발견하면 문자열의 끝에 도달한 것으로 판단한다.

 

>> sizeof()

더보기

어떤 자료형의 값을 저장하는 데 필요한 메모리의 크기는 sizeof()를 이용하여 알 수 있다.

대부분의 C Compiler가 어떠한 자료형의 값을 저장하는 데 필요한 메모리의 크기는 대부분 동일하긴 하지만

(정수 - 4byte 등), 모든 Compiler가 그런 것은 아니다.

Computer와 Compiler에 따라 실행 결과는 다를 수 있다.

 

2) strlen()

strlen()은 sizeof() 함수처럼 번거롭게 계산할 필요 없이 아래와 같이 활용하면 된다.

len = strlen(str);

 

※ 배열의 크기가 지정되어 있는 경우

배열의 크기가 지정되어 있는 경우에는 sizeof() 방식으로 크기를 측정할 경우

초기에 할당된 배열의 크기가 반환되기 때문에 strlen() 함수를 이용하여 해당 문자열의 크기를 확인해야 한다.


strcmp()

strcmp(), strncmp()
  1) 동일한 경우 0 반환
  2) str1 < str2 인 경우 음수 반환
  3) str1 > str2 인 경우 양수 반환
기준: 아스키코드 값


문자열의 길이 vs 문자열의 크기

문자 배열(character array)

※ (문자열의 길이) =/ (문자열의 크기) = (배열의 크기)

(문자열의 크기) = (배열의 크기) = (문자열의 길이) + 1 (NULL 문자)

문자열의 길이는 문자를 저장하는 byte의 개수이지만 NULL 문자를 포함하지 않는다.

문자열의 길이는 strlen()를 호출하여 확인할 수 있다.

문자열의 크기는 문자열을 저장하는 데 필요한 문자의 수로서 NULL 문자를 포함한다.


참고

https://sf2020.tistory.com/102

https://blockdmask.tistory.com/391

도서 <어서와 C언어는 처음이지!>