인프런 커뮤니티 질문&답변

kmj7626443님의 프로필 이미지
kmj7626443

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

연습 문제 (문자열) #1

2번째 이렇게 하면 이상한 값들이 들어가 있던데 어디서 잘못됐을까요?

작성

·

257

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
2번 문제를 맨처음 이렇게 해서 풀었는데 값이
이렇게 해서 나왔습니다 혹시 제가 잘못한 부분이 있을까요?

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

이 부분은 어떤 의미로 넣어주신건가요?

kmj7626443님의 프로필 이미지
kmj7626443
질문자

src의 글자수 크기만큼 돌아줄려하기 위해서 sizeof(src)/sizeof(char) 형을 할려고 하다가 잘못 적은거 같아요 ㅠ

Rookiss님의 프로필 이미지
Rookiss
지식공유자

배열에서는 그 문법이 맞을 수 있지만, 지금은 대상이 포인터입니다.
sizeof(src)에서 src의 크기는 4 or 8 바이트 고정(32비트/64비트에 따라)입니다.
따라서  sizeof(src)/sizeof(char)은 문자열의 길이가 되지 않는게 문제입니다.
지금은 무저건 1이 될듯 하네요. 이 부분은 breakpoint를 잡아서 f10으로 실행해보시기 바랍니다.

두번째로

이 코드에서 src[i] != NULL을 굳이 체크를 하지 않고
dest[i] = src[i]를 해도 어차피 NULL인 경우 알아서 NULL이 들어가니,
굳이 if else 체크를 해줄 필요가 없었을 것 같네요.

결과적으로 NULL로 밀어주는 부분이 실행되지 않으니,
문자열 특성상 NULL을 만날때까지 쭉 출력하게 되어 외계어가 출력되고 있는 것입니다.

kmj7626443님의 프로필 이미지
kmj7626443
질문자

감사합니다 선생님!!

kmj7626443님의 프로필 이미지
kmj7626443

작성한 질문수

질문하기