문자열 함수
#include <string.h> -> 문자열 함수 사용시 필수 헤더파일
[문자열 복사]
char *strcpy(char *dest, const char *src);
문자 배열의 내용을 복사(정수나 실수의 '='대입연산자에 해당, dest = src)
dest가 src이상의 충분한 크기를 가져야 한다.
NULL 종료 문자를 만날 때까지 복사
char *strncpy(char *dest, const char *src, size_t count);
지정한 길이만큼 복사
count가 src문자열의 길이보다 더 길면 이후는 모두 널 문자로 채워진다.
[문자열 길이]
size_t strlen(const char *string);
문자열의 시작 번지만 주면 이 번지에 들어있는 문자열의 길이를 조사한다.
[문자열 연결]
char *strcat(char *dest, const char *src);
char *strncat(char *dest, const char *src, size_t count);
dest의 끝에 있는 널 종료 문자 삭제. src문자열 끝에 있는 널 종료 문자가 같이 연결.
[문자열 비교]
int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, size_t count);
s1 = s2 이면 0
s1 > s2 이면 양수
s1 < s2 이면 음수
int stricmp(const char *string1, const char *string2);
int strnicmp(const char *string1, const char *string2, size_t count);
영문 비교의 경우 대소문자 구분없이 비교한다.
도스, 윈도우 파일 시스템의 경우는 대소문자 구분이 없으므로 stricmp
유닉스, 리눅스 파일 시스템의 경우는 대소문자 구분이 있으므로 strcmp
[문자열 변환]
char *strset(char *string, int c);
char *strnset(char *string, int c, size_t count);
문자열을 c문자로 가득 채운다.
char *strlwr(char *string);
모든 문자를 소문자로 바꾼다.
char *strupr(char *string);
모든 문자를 대문자로 바꾼다.
char *strrev(char *string);
문자열을 거꾸로 뒤집는다.
[문자관리 함수]
int isalpha(int c); A-Z, a-z
int isupper(int c); A-Z
int islower(int c); a-z
int isdigit(int c); 0-9
int isxdigit(int c); 0-9, A-F, a-f
int isalnum(int c); 0-9, A-Z, a-z
int isprint(int c); 인쇄 가능한 문자
int isgraph(int c); 공백을 제외한 인쇄 가능한 문자
int ispunct(int c); 인쇄 가능한 문자중 공백과 isalnum을 제외한 문자
int isspace(int c); 0x09-0x0d, 0x20
특정 그룹에 속하면 0이 아닌 값을 리턴, 그렇지 않으면 0리턴.
int tolower(int c);
int toupper(int c);
영문 대소문자 변환
[메모리 관리 함수]
void *memcpy(void *dest, const void *src, size_t count);
int memcmp(const void *buf1, const void *buf2, size_t count);
void *memchr(const void *buf, int c, size_t count);
void *memset(void *dest, int c, size_t count);
void *memmove(void *dest, const void *src, size_t count);
바이트를 직접 다루기 때문에 모든 타입에 대해 사용가능
다차원 배열, 구조체 배열도 memcpy를 사용하면 복사할 수 있다.
memmove함수는 메모리 내용을 지정한 길이만큼 다른 곳으로 옮긴다.
[정수와 문자열]
char *itoa(int value, char *string, int radix);
char *ltoa(long value, char *string, int radix);
char *ultoa(unsigned long value, char *string, int radix);
정수를 문자열로 변환(Integer to Ascii)
int atoi(const char *string);
long atol(const char *string);
long strtol(const char *nptr, char **endptr, int base);
unsigned long strtoul(const char *nptr, char **endptr, int base);
문자열을 정수로 변환(Ascii to Integer)
[실수와 문자열]
char *gcvt(double value, int digits, char *buffer);
char *ecvt(double value, int count, int *dec, int *sign);
char *fcvt(double value, int count, int *dec, int *sign);
실수를 문자열로 변환(거의 사용 안 함)
double atof(const char *string);
double strtod(const char *nptr, char **endptr);
문자열을 실수로 변환
[sprintf]
int sprintf(char *buffer, const char *format, ...);
서식화된 출력을 첫 번째 인수로 전달된 buffer 배열로 보낸다.
정수나 실수를 문자열로 변환가능하며 일반 문자열 변환 함수보다 기능이 많으나, 덩치가 커서 실행파일이 커지고, 속도가 느리다.