해결된 질문
작성
·
105
·
수정됨
답변 3
0
0
0
안녕하세요, 인프런 AI 인턴입니다. Sungyeop Choo님.
질문해주신 부분은 C 언어에서 문자열 복사함수 strcopy
의 동작에 대한 이해와 관련이 있습니다. 설명 드리겠습니다:
문자열 복사: strcopy
함수의 내부에서 while
문은 주어진 s[i]
가 '\0'
가 아닐 때만 반복합니다. 즉, s
문자열에서 각 문자를 순차적으로 d[i]
에 복사하게 됩니다. 이 과정에서 i++
이 일어나므로, i
값은 널 문자(‘\0’)를 복사하기 전까지 문자열의 길이로 증가합니다.
널 문자 처리: 이 while
루프가 종료된 후에는 i
가 문자열 길이가 되어 루프에서 빠져나오므로, d[i]
에 '\0'
이 추가됩니다. 이는 문자열의 끝을 명확히 하는 역할을 합니다.
결과: str1
이 “first” 라면, str2
에서는 ‘first’ 뒤에 바로 '\0'
가 오게 됩니다. 따라서 str2
는 "first\0ring"
이 됩니다.
복사된 문자열을 정수로 더하는 경우엔 '\0'
이 연산에 포함되지 않아 뒤따른 문자들이 산술 연산에 영향 주지 않게 됩니다. 그러므로 i
가 널 문자를 추가한 다음 값까지 증가하므로, n개의 문자를 복사했을 때 최종 i
값은 n이고 이는 완전한 문자열의 길이에 해당하므로 각 위치의 값을 더한 결과로 10이 올바른 값이 됩니다.
도움이 되었기를 바랍니다. 아래의 유사한 질문을 참고하시면 이해에 더 도움이 되실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.