이런식으로 디버그 잡아보면 계속 붙는다.
굿.
나는 이렇게 했는데 이렇게 하면 안되는 이유..???
왜 에러??
중간에 버퍼 사이즈 들어가는 이유 => 크기를 명시해주기 위해서
나중에 템플릿 방식 wsccat_sn 함수 배울 것이다.
템플릿 배우고
(C#으로 치면 제네렉타입)
#include < assert >
assert(nullptr);
aasert함수는 메크로 함수이다.
특정 함수를 호출하도록 잡혀있는 메크로함수임.
이 함수를 호출하면
저기 밑줄 친 부분 호출 하도록 되어있음.
절대 일어나면 안되는 경우 aseert를 통해서 사용자가 인식을 하도록
NULL문자가 들어가기 때문에 + 1을 해주고
if문에서 bufferSize와 같은것 까지는 상관없다.
Over했을 떄 문제가 된다.
끝이라고 생각되는 부분에서
이렇게 붙여야함.
뭐 이런식으로 일단 진행을 하는데
코드를 짜기에 앞서서 항상 무엇을 할지 정리를 하고 하자
그래야 내가 나중에 뭘 하는지도 알 수 있고
질문도 할 수 있다.
for (int i = 0; i < iSrcLen + 1; ++i)
에서 iSrcLen + 1을 한 이유는 마지막 NULL문자까지 포함을 하기 위해서이다.
그래서 목적지 [ iDestLen + i ] = _pSrc [ i ] 해주면
문자열의 끝 '\0'에부터 계속 채워주는 식이다.
GetLen구현해주고
strCat구현해준다음에
26번째 줄 destSrcLen + srcLen + 1 > destLen 일 경우 라면 에러
문자열 마지막에 NULL들어가는 생각해서
destSrcLen + srcLen + 1 > destLen이게 더 크면 말이 안되는 것이니까
그다음 for문 돌면서 인덱스 자리에 붙일 것을 채워 넣어주면된다.
그리고 break잡아서 보면은
잘됨.
에러도 잡힌다.
wcscmp()함수 똑같이 구현하기
두개의 문자열을 받아서 상태 체크를 하는 문제이다.
두 문자열이 완벽하게 일치할 경우 0, false네?
일치하지 않으면 1이 나온다.
그런데 이럴 경우 -1이 나온다.
0을 기준으로 -1 또는 1이다.
아스키 코드 값 활용
길이 비교