Develop

문자열 함수

Y.J Kim 2013. 10. 25. 14:22

#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 배열로 보낸다.

정수나 실수를 문자열로 변환가능하며 일반 문자열 변환 함수보다 기능이 많으나, 덩치가 커서 실행파일이 커지고, 속도가 느리다.