반응형
#include<iostream>
using namespace std;
//문자열 길이
unsigned int MyStrLen(const char* Src);
//문자열 복사
char* MyStrCpy(char*Dest,const char* Src);
//문자열 복사 안정
char* MyStrCpy_s(char* Dest,unsigned int Size,const char* Src);
//문자열 붙히기
char* MyStrCat( char*Dest,const char* Src);
//문자열 붙히기 안정
char* MyStrCat_s(char* Dest,unsigned int Size,const char*Src);
//문자열 비교
char* MyCmp(const char*Str1,const char*Str2);
int main(void)
{
cout<<"문자열 길이 테스트 : ";
int Strlen=0;
const char *Str="abcdasdfasdfadsfa";
Strlen = MyStrLen(Str);
cout<<Strlen<<endl;
//cout<<"문자열 복사 테스트 : ";
char Strcpy[100];
MyStrCpy(Strcpy,"문자열 복사테스트 :서울 게임 아카데미");
cout<<Strcpy<<endl;
//문자열 복사 테스트 안정
char Strcpy_s[100];//복사받을 문자열
char*StrSrc="복사테스트 안정 서울 게임 아카데미";//복사할 문자열
cout<<MyStrCpy_s(Strcpy_s,90,StrSrc)<<endl;
///문자열 붙이기
char StrDestcat[100]="문자열 붙히기 : ";
char*StrSrccat="서울게임 아카데미";
cout<<MyStrCat(StrDestcat,StrSrccat)<<endl;
//문자열 붙이기 안정
char StrDestcat_s[100]="문자열 붙히기 안정 :";
char *StrSrccat_s="서울 게임 아카데미";
cout<<MyStrCat_s(StrDestcat_s,100,StrSrccat_s)<<endl;
//문자열 비교
char *StrCmp1="서울 게임 아카데미";
char *StrCmp2="서울 게임 아카데미 23기";
cout<<"문자열 비교 : "<<MyCmp(StrCmp1,StrCmp2)<<endl;
return 0;
}
//문자열 길이
unsigned int MyStrLen(const char* Src)
{
const char* pDest=Src;
while(*pDest++ !=NULL)
pDest++;
return pDest-Src-1;
}
//문자열 복사
char* MyStrCpy(char*Dest,const char* Src)
{
char*pDest = Dest;
while(*Src !=NULL)
{
*Dest++=*Src++;
}
*Dest='\0';
return pDest;
}
//문자열 복사 안
char* MyStrCpy_s(char* Dest,unsigned int Size,const char* Src)
{
//널 체크
char *DestErrStr="복사될 버퍼용량이 NULL 이다.";
char *SrcErrStr="복사할 버퍼용량이 NULL 이다.";
char *SizeStr="복사하려는 문자의 크기보다 작습니다.";
//크기 체크
if (Size<MyStrLen(Src)+1)
{
return SizeStr;
}
else if (*Dest==NULL)
{
return DestErrStr;
}
else if(*Src==NULL)
{
return SrcErrStr;
}
char *pDest = Dest;
while(*Src !=NULL)
{
*Dest++=*Src++;
}
*Dest='\0';
return pDest;
}
//문자열 붙히기
char* MyStrCat( char*Dest,const char* Src)
{
char* pDest=Dest;
while (*Dest!=NULL)
*Dest++;
while(*Src!=NULL)
*Dest++=*Src++;
*Dest='\0';
return pDest;
}
//문자열 붙히기 안정
char* MyStrCat_s(char* Dest,unsigned int Size,const char*Src)
{
//널 체크
char *SizeStr="버퍼크기가 작다.";
//크기 체크
if (Size<MyStrLen(Src)+MyStrLen(Dest)+1)
{
return SizeStr;
}
char* pDest=Dest;
while (*Dest!=NULL)
*Dest++;
while(*Src!=NULL)
*Dest++=*Src++;
*Dest='\0';
return pDest;
}
//문자열 비교
char* MyCmp(const char*Str1,const char*Str2)
{
unsigned int nStr1_Len = MyStrLen(Str1);
unsigned int nStr2_Len = MyStrLen(Str2);
char* EqualStr = "두문자열이 같습니다";
char* LeftBigStr = "왼쪽문자열이 더 큽니다.";
char* RightBigStr = "오른쪽 문자열이 더 큽니다.";
if (nStr1_Len == nStr2_Len)
{
return EqualStr;
}
else if (nStr1_Len > nStr2_Len)
{
return LeftBigStr;
}
else
return RightBigStr;
}
반응형