- 문자열 : 문자 배열->문자를 여러개 저장
- 선언 : char * str;(기존의 포인터 배열처럼 *(str+i)로 지정 가능) 혹은 char str원하는 문자열의 문자 갯수;
- 문자열의 끝을 NULL='\0'(아스키코드값 0)로 지정->원하는 문자열 길이+1
- %s로 출력, 쌍따옴표("")는 마지막에 알아서 NULL문자를 넣어줌.
- 문자열 함수
int strlen(char * s)
{
int res=0;
for(;*s!='\0';s++) res++;
return res;
}
- strcmp : 문자열 2개를 비교하여 같으면 1을 return, 다르면 0을 return
int strcmp(char * s, char * d)
{
for(;*s!='\0';s++,d++) if(*s!=*d) return 0;
if(*d=='\0') return 1;
return 0;
}
- strtoupper : 소문자를 대문자로 모두 변경(직접 대입한 문자(열)를 바꾸기 못함)
void strtoupper(char * str)
{
for(;*str!='\0';str++) if(*str>='a' && *str<='z') *str+=(int)('A'-'a');
}
- strtolower : 대문자를 소문자로 모두 변경(직접 대입한 문자(열)를 바꾸기 못함)
void strtolower(char * str)
{
for(;*str!='\0';str++) if(*str>='A' && *str<='Z') *str+=(int)('a'-'A');
}
- strcpy : 한 문자열의 내용을 다른 문자열에 복사(문자열의 길이가 복사하고자 하는 문자열 변수의 범위를 초과하면 안됨)
void strcpy(char * d, char * s)
{
for(;*s!='\0';s++,d++) *d=*s;
*d='\0';
}
- strdup : 문자열 하나를 생성 후 그 곳에 다른 문자열을 복사
char * strdup(char * s)
{
int len=strlen(s),i;
char * res = (char *) malloc(sizeof(char)*(len+1));
for(i=0;i<=len;i++) res[i]=s[i];
return res;
}
- strcat : 한 문자열의 내용을 다른 문자열에 이어붙이기(붙여야 될 문자열 변수가 수정할 수 있는 문자열이여야 함, 붙여야 될 문자열 변수가)
void strcat(char * d, char * s)
{
for(;*d='\0';d++) ;
for(;*s!='\0';s++,d++) *d=*s;
*d='\0';
}
- strstr : 한 문자열 내에 다른 문자열의 내용이 존재하는지 확인, 인덱스 위치를 return 못찾으면 -1을 return
int strstr(char * s,char * p)
{
int slen,plen,i,j;
slen=strlen(s);
plen=strlen(p);
for(i=0;i<(slen-plen);i++)
{
if(s[i]==p[i])
{
for(j=i;j<=i+plen;j++) if(s[i+j]!=p[j]) break;
if(j==plen) return i;
}
}
return -1;
}
- trim :
꺼억 두가지 종류가 있다.
- ltrim : 문자가 나오기 전까지의 공백을 앞으로 땡김
void ltrim(char * str)
{
int cnt=0;
for(;*str!='\0';str++)
{
if(*str==' ')
{
cnt++;
*(str+cnt)==*str;
}
}
}
- rtrim : 문자열이 다나온 뒤의 공백을 없애고 NULL을 앞으로 땡김
void rtrim(char * str)
{
int len,cnt=0,i;
for(i=len-1;i>=0;i--)
{
if(*(str+i)==' ')
{
cnt++;
*(str+i)=*(str+i+cnt);
}
}
}