#include <stdio.h>
#include <wchar.h>
#include <stdlib.h>
#include <assert.h>
void strCat(wchar_t* origin, unsigned int n, const wchar_t* add);
unsigned int GetLength(const wchar_t* _szN);
int strCmpp(const wchar_t* a, const wchar_t* b);
int main(void)
{
char szTest[10] = "abc한글";
wchar_t szTestW[10] = L"abc한글";
wchar_t szName[20] = L"Raimond";
//문자열 문자 개수 세기 함수
GetLength(szName);
//문자열 이어 붙이기 함수
strCat(szName, 20, L"abcedfg");
//문자열 크기 비교 함수 만들기
int c = strCmpp(L"ABC", L"abc");
c; // -1
return 0;
}
unsigned int GetLength(const wchar_t* _szN)
{
int i = 0;
while (true)
{
wchar_t c = _szN[i];
if (c == '\0')
{
break;
}
i++;
}
return i;
}
void strCat(wchar_t* origin, unsigned int n, const wchar_t* add)
{
//예외 처리
int origin_L = GetLength(origin);
int add_L = GetLength(add);
if (n < origin_L + add_L + 1)
{
assert(nullptr);
}
origin_L;
int i;
for (i = 0; i < add_L; i++)
{
origin[origin_L + i] = add[i];
}
}
int strCmpp(const wchar_t* _left, const wchar_t* _right)
{
int leftLen = GetLength(_left);
int rightLen = GetLength(_right);
int iReturn = 0; //길이도 같고, 문자열값도 같으면 0리턴
int iLoop = leftL;
//문자열의 길이가 더길경우
if (leftL < rightL)
{
iLoop = leftL;
iReturn = -1;
}
else if (leftL > rightL)
{
iLoop = rightL;
iReturn = 1;
}
//왼쪽, 오른쪽중 작은 부분 만큼 반복
for (int i = 0; i < iLoop; i++)
{
if (a[i] < b[i])
{
return -1;
}
else if (a[i] > b[i])
{
return 1;
}
}
return iReturn;
}
c & c++/문자열
댓글