현재 널리 사용되는 플랫폼은 char 타입을 인코딩할 때 ASCII(American Standard Code for Information Interchange)를 사용한다. 기본 문자 집합만 사용한다면 현재 어떤 인코딩 방식을 사용하는지 알 필요가 없다. C와 표준 라이브러리에서 사용하는 문자는 모두 이 인코딩 방식을 따른다.
표준 라이브러리는 char 배열과 스트링을 다루기 위한 함수를 다양하게 제공한다. 이 라이브러리는 string.h 헤더 파일을 통해 제공된다. 배열 인수만 필요한 함수는 mem으로 시작하고, 스트링 인수도 추가로 받는 함수는 str로 시작한다. 예제 6-2는 이런 함수를 사용하는 예다.
예제 6-2 스트링 함수 사용 예
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[argc+1]) {
size_t const len = strlen(argv[0]); // 길이를 계산한다.
char name[len+1]; // VLA를 생성한다.
// 0이 들어갈 자리를 확보한다.
memcpy(name, argv[0], len); // 이름을 복제한다.
name[len] = 0; // 문자 0을 넣는다.
if (!strcmp(name, argv[0])) {
printf("program name \"%s\" successfully copied\n",
name);
} else {
printf("copying %s leads to different string %s\n",
argv[0], name);
}
}