sizeof(a) => 100나온다.
(나중에는 cpp String 사용할 꺼임)
strlen(a); 사용을 하면 실제 사용하는 크기만을 나타내준다.
int StrLen(const char* str)
{
int index = 0;
while (*(str + index) != '\0')
{
++index;
}
return index;
}
strcpy() 라는 함수로 dest, source 인자로 받는다.
그런데 이거 오래된 구닥다리 버젼이라
복사는 애랑 복사당하는 애랑 크기 않맞으면 다른 메모리 오염시킴
그래서 strcpy_s 버젼이 있다.
void StrCpy(char* dest, char* src)
{
int srcLen = StrLen(src);
for (int i = 0; i < srcLen; ++i)
*(dest + i) = *(src + i);
}
이렇게 했는데 빼먹은게 있다!
void StrCpy(char* dest, char* src)
{
int srcLen = StrLen(src);
for (int i = 0; i < srcLen; ++i)
*(dest + i) = *(src + i);
*(dest + srcLen) = '\0'; 이거없으면 어디가 끝인지 알 수 없다.
}
8번째 인덱스 '\n' 까지 들어가야한다.
또는
++ 반환이 참조이기 때문에
이렇게도 가능함.
char* StrCat(char* dest, char* src)
{
int srcLen = StrLen(dest);
int index = 0;
for (; index < srcLen; ++index)
*(dest + (srcLen + index)) = *(src + index);
*(dest + index + srcLen) = '\0';
return dest;
}
char* StrCat2(char* dest, char* src)
{
while (*dest != '\0')
{
++dest;
}
while (*src != '\0')
{
*dest = *src;
++dest;
++src;
}
return dest;
}
이거 또는
char* StrCat2(char* dest, char* src)
{
char* ret = dest;
while (*dest != '\0')
++dest;
while (*src != '\0')
*dest++ = *src++;
return ret;
}
// 이렇게 가능.