가끔 문자열 처리나오면 새로 만드는 귀찮니즘 때문에
"C기초에서 그래픽까지" 김정철님께서 쓰신 책의 내용을 정리해서
올려봅니다..
조금이나마 도움이 됐으면 합니다...
** 문자열 처리 함수 **
#include <string.h>
1) 문자열의 길이 측정(strlen)
strlen(문자열)
2) 문자열 결합(strcat)
char *ptr;
ptr = strcat(문자열, 문자열2)
3) 문자열 비교(strcmp)
int i;
i = strcmp(문자열, 문자열2)
i == 0 <--- 같다.
i != 1 같지 않다.
4) 문자열 복사(strcpy)
char *ptr;
strcpy(문자열, 문자열2)
문자열2를 문자열로 복사
5) 문자열 변환(atoi, atol, atof)
atoi -> 정수
atol -> long
atof -> 부동 소수점.
long b; float c;
int a;
a = atoi("1234");
b = atol("-544334");
c = atof("43.5456);
6) 문자열 교환 함수 (str_swap)
void str_cpy(char *ptr1, char *ptr2)
{
while(*ptr2)
*ptr1++ = *ptr2++;
*ptr1 = NULL;
}
void str_swap(char *a, char *b)
{
char temp[255];
str_cpy(temp, a)
str_cpy(a, b);
str_cpy(b, temp);
}
7) 문자열 내에서 특정 문자의 개수를 카운트 하는 함수(char_cnt)
int char_cnt(char *ptr, char ch)
{
int i = 0;
wile(*ptr)
if(*ptr++ == ch)
i++;
return(i);
}
8) 문자열 내의 특정 문자를 다른 문자로 바꾸는 함수(str_chg)
int str_chg(char *ptr, char ch1, char ch2)
{
while(*ptr)
{
if(*ptr == ch1)
*ptr = ch2;
ptr++;
}
}
9) 문자열 내의 특정 문자를 탐색(str_fine)
char *str_find(char *ptr, char ch)
{
while(*ptr)
{
if(*ptr == ch)
return(ptr);
ptr++;
}
return((char *)(-1));
}
10) 문자열 내의 소문자를 대문자로 바꾸는 함수(str_upp)
void str_upp(char *ptr)
{
while(*ptr)
{
if(islower(*ptr))
*ptr = toupper(*ptr);
ptr++;
}
}
11) 문자열 내의 대문자를 소문자로 바꾸는 함수(str_low)
void str_low(char *ptr)
{
while(*ptr)
{
if(isupper(*ptr))
*ptr = tolower(*ptr);
ptr++;
}
}
12) 대문자와 소문자 상호 교환 함수(str_case)
void str_case(char *ptr)
{
while(*ptr)
{
if(isupper(*ptr))
*ptr = tolower(*ptr);
else if(islower(*ptr)
*ptr = toupper(*ptr);
ptr++;
}
}
13) 각 문장의 첫 문자만 대문자로 교환하는 함수(str_fst)
void str_fst(char *ptr)
{
if(islower(*ptr))
*ptr = toupper(*ptr);
while(*ptr)
{
if(*ptr == '.')
{
ptr++;
while(*ptr == ' ')
ptr++;
if(islower(*ptr))
*ptr = toupper(*ptr);
}
}
ptr++;
}
14) 문자열 내의 지정한 위치에 다른 문자열을 삽입하는 함수(str_ins)
char *str_ins(char ptr1[], char ptr2[],int t)
{
char temp[255];
int i, j, k;
if(t>=str_len(ptr1) return (-1);
for(k=0; i=0; i<t; i++; k++)
temp[k] = ptr1[i];
for(j=0; ptr2[j] !=NULL; j++, k++)
temp[k] = ptr2[j];
while(ptrl1[i])
temp[k++] = ptr1[i++];
temp[k] = NULL;
}
15) 문자열 앞에 지정한 개수 만큼의 공백을 추가하는 함수(str_blk)
void str_blk(char ptr[], int t)
{
static char temp[255];
int i;
for(i = 0; i<t; i++)
temp[i] = BLANK;
temp[i] = NULL;
str_cat(temp ptr);
str_cpy(ptr, temp);
}
16) 문자열 내의 모든 공백을 삭제하는 함수(rmv_blk)
void rmv_blk(char ptrp[])
{
char temp[255];
int i, k;
for(i=0, k=0; ptr[i] != NULL; i++)
if(ptr[i] != BLANK)
temp[k++] = ptr[i];
temp[k] = NULL;
str_cpy(ptr, temp);
}
17) 문자열 내에서 원하는 개수 만큼 문자를 삭제하는 함수(str_rmv)
void str_rmv(char *ptr, int loc, int count)
{
int len, i, j;
len = str_len(ptr);
if(loc >= len)
return (-1);
if(loc + count <= len)
{
j = loc + count;
for(i=loc; ptr[j] != 0; i++)
{
ptr[i] = ptr[j];
j++;
}
ptr[i] = NULL
}
else
ptr[loc] = NULL;
}
18) 특정한 문자열이 기억된 위치를 계산하는 함수(str_loc)
int str_loc(char ptr1[], char ptr2[])
{
int i, j, k;
for(i=0; ptr1[i] != NULL; i++)
for(j=i, k=0; ptr2[k] == ptr1[j]; k++, j++)
return (i);
return (-1);
}
19) 특정한 문자열이 나온 개수를 카운트 하는 함수(str_cnt)
int str_cnt(char ptr1[], char ptr2[])
{
int i, j, k;
int count = 0;
for(i=0; ptr1[i] != NULL; i++)
for(j=i, k=0; ptr2[k] == ptr1[j]; k++, j++)
if(ptr2[k+1] == NULL)
{
count++;
break;
}
return ((count == 0) ? -1 : count);
}
"C기초에서 그래픽까지" 김정철님께서 쓰신 책의 내용을 정리해서
올려봅니다..
조금이나마 도움이 됐으면 합니다...
** 문자열 처리 함수 **
#include <string.h>
1) 문자열의 길이 측정(strlen)
strlen(문자열)
2) 문자열 결합(strcat)
char *ptr;
ptr = strcat(문자열, 문자열2)
3) 문자열 비교(strcmp)
int i;
i = strcmp(문자열, 문자열2)
i == 0 <--- 같다.
i != 1 같지 않다.
4) 문자열 복사(strcpy)
char *ptr;
strcpy(문자열, 문자열2)
문자열2를 문자열로 복사
5) 문자열 변환(atoi, atol, atof)
atoi -> 정수
atol -> long
atof -> 부동 소수점.
long b; float c;
int a;
a = atoi("1234");
b = atol("-544334");
c = atof("43.5456);
6) 문자열 교환 함수 (str_swap)
void str_cpy(char *ptr1, char *ptr2)
{
while(*ptr2)
*ptr1++ = *ptr2++;
*ptr1 = NULL;
}
void str_swap(char *a, char *b)
{
char temp[255];
str_cpy(temp, a)
str_cpy(a, b);
str_cpy(b, temp);
}
7) 문자열 내에서 특정 문자의 개수를 카운트 하는 함수(char_cnt)
int char_cnt(char *ptr, char ch)
{
int i = 0;
wile(*ptr)
if(*ptr++ == ch)
i++;
return(i);
}
8) 문자열 내의 특정 문자를 다른 문자로 바꾸는 함수(str_chg)
int str_chg(char *ptr, char ch1, char ch2)
{
while(*ptr)
{
if(*ptr == ch1)
*ptr = ch2;
ptr++;
}
}
9) 문자열 내의 특정 문자를 탐색(str_fine)
char *str_find(char *ptr, char ch)
{
while(*ptr)
{
if(*ptr == ch)
return(ptr);
ptr++;
}
return((char *)(-1));
}
10) 문자열 내의 소문자를 대문자로 바꾸는 함수(str_upp)
void str_upp(char *ptr)
{
while(*ptr)
{
if(islower(*ptr))
*ptr = toupper(*ptr);
ptr++;
}
}
11) 문자열 내의 대문자를 소문자로 바꾸는 함수(str_low)
void str_low(char *ptr)
{
while(*ptr)
{
if(isupper(*ptr))
*ptr = tolower(*ptr);
ptr++;
}
}
12) 대문자와 소문자 상호 교환 함수(str_case)
void str_case(char *ptr)
{
while(*ptr)
{
if(isupper(*ptr))
*ptr = tolower(*ptr);
else if(islower(*ptr)
*ptr = toupper(*ptr);
ptr++;
}
}
13) 각 문장의 첫 문자만 대문자로 교환하는 함수(str_fst)
void str_fst(char *ptr)
{
if(islower(*ptr))
*ptr = toupper(*ptr);
while(*ptr)
{
if(*ptr == '.')
{
ptr++;
while(*ptr == ' ')
ptr++;
if(islower(*ptr))
*ptr = toupper(*ptr);
}
}
ptr++;
}
14) 문자열 내의 지정한 위치에 다른 문자열을 삽입하는 함수(str_ins)
char *str_ins(char ptr1[], char ptr2[],int t)
{
char temp[255];
int i, j, k;
if(t>=str_len(ptr1) return (-1);
for(k=0; i=0; i<t; i++; k++)
temp[k] = ptr1[i];
for(j=0; ptr2[j] !=NULL; j++, k++)
temp[k] = ptr2[j];
while(ptrl1[i])
temp[k++] = ptr1[i++];
temp[k] = NULL;
}
15) 문자열 앞에 지정한 개수 만큼의 공백을 추가하는 함수(str_blk)
void str_blk(char ptr[], int t)
{
static char temp[255];
int i;
for(i = 0; i<t; i++)
temp[i] = BLANK;
temp[i] = NULL;
str_cat(temp ptr);
str_cpy(ptr, temp);
}
16) 문자열 내의 모든 공백을 삭제하는 함수(rmv_blk)
void rmv_blk(char ptrp[])
{
char temp[255];
int i, k;
for(i=0, k=0; ptr[i] != NULL; i++)
if(ptr[i] != BLANK)
temp[k++] = ptr[i];
temp[k] = NULL;
str_cpy(ptr, temp);
}
17) 문자열 내에서 원하는 개수 만큼 문자를 삭제하는 함수(str_rmv)
void str_rmv(char *ptr, int loc, int count)
{
int len, i, j;
len = str_len(ptr);
if(loc >= len)
return (-1);
if(loc + count <= len)
{
j = loc + count;
for(i=loc; ptr[j] != 0; i++)
{
ptr[i] = ptr[j];
j++;
}
ptr[i] = NULL
}
else
ptr[loc] = NULL;
}
18) 특정한 문자열이 기억된 위치를 계산하는 함수(str_loc)
int str_loc(char ptr1[], char ptr2[])
{
int i, j, k;
for(i=0; ptr1[i] != NULL; i++)
for(j=i, k=0; ptr2[k] == ptr1[j]; k++, j++)
return (i);
return (-1);
}
19) 특정한 문자열이 나온 개수를 카운트 하는 함수(str_cnt)
int str_cnt(char ptr1[], char ptr2[])
{
int i, j, k;
int count = 0;
for(i=0; ptr1[i] != NULL; i++)
for(j=i, k=0; ptr2[k] == ptr1[j]; k++, j++)
if(ptr2[k+1] == NULL)
{
count++;
break;
}
return ((count == 0) ? -1 : count);
}
'프로그래밍 > C | C++' 카테고리의 다른 글
RTPLIB 1.0b 라이브러리 예제 (0) | 2013.08.14 |
---|---|
RTP 문서 한글 번역본 (0) | 2013.08.14 |
FFMPEG 압축 기본적인 사용법 (0) | 2013.08.14 |
[펌] C 프로그래머가 알아야할 것들 #4 (0) | 2013.08.14 |
[펌] C 프로그래머가 알아야할 것들 #3 (0) | 2013.08.14 |