CPP_어소_38_문자열(4)

CJB_ny·2022년 6월 23일
0

CPP_AROTHO

목록 보기
36/83
post-thumbnail

이런식으로 디버그 잡아보면 계속 붙는다.

굿.

이것을 구현

나는 이렇게 했는데 이렇게 하면 안되는 이유..???

왜 에러??

중간에 버퍼 사이즈 들어가는 이유 => 크기를 명시해주기 위해서

나중에 템플릿 방식 wsccat_sn 함수 배울 것이다.

템플릿 배우고

(C#으로 치면 제네렉타입)

경고 발생 기능

#include < assert >

assert(nullptr);

aasert함수는 메크로 함수이다.

특정 함수를 호출하도록 잡혀있는 메크로함수임.

이 함수를 호출하면

저기 밑줄 친 부분 호출 하도록 되어있음.

절대 일어나면 안되는 경우 aseert를 통해서 사용자가 인식을 하도록

그래서 구현

NULL문자가 들어가기 때문에 + 1을 해주고

if문에서 bufferSize와 같은것 까지는 상관없다.

Over했을 떄 문제가 된다.

끝이라고 생각되는 부분에서

이렇게 붙여야함.

정리를 하면서 구현하기!(중요)

뭐 이런식으로 일단 진행을 하는데

코드를 짜기에 앞서서 항상 무엇을 할지 정리를 하고 하자

그래야 내가 나중에 뭘 하는지도 알 수 있고

질문도 할 수 있다.

2번 다시 구현

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이다.

아스키 코드 값 활용
길이 비교

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글