** 문자열 처리 함수 **
#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;
while(*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++의 개선으로 D는 C 코드와 호환되며 콜 인터페이스 없이 어떠한 C API와도 인터페이스 가능하다. 그러나 D는 C 코드와 완전하게 후향적 호환은 안되며 자바와 Microsoft C#의 많은 기능을 추가로 한다. D는 2001년 이후 개발되었으며 오픈 소스 공동체의 입력물을 많이 사용하였으며 http://dmoz.org/Computers/Programming/Languages/D/에 자료가 많이 있다.
브라이트는 “D는 C++ 프로그래머의 경험에 의해 개발되었으며 많은 새로운 언어처럼 어느 특정한 플랫폼을 목적으로 설계되지 않았다. D의 개념은 빠르게 배우고 코딩하고 빠르게 디버깅하며 유지 보수하는 것”이라고 말했다.
Forrester Research 분석가인 제프 함몬드는 “D가 기반을 얻기까지에는 약간의 시간이 걸릴 것이다. D 언어가 성공하려면 D 언어 기술이 좋은 것 이외에도 그에 맞는 비즈니스 모델이 있어야 될 것”이라고 말했다. 마치 리눅스가 성공한 이유가 그 당시 다른 OS 가격이 너무 고가이어서 고객들이 선택했기 때문인 것처럼 필요한 비즈니스 모델이 중요하다.
출처 : http://www.internetnews.com