해결된 질문
작성
·
65
0
강사님 1:05:13 코드 두번째 출력 (first ring) 이해가 안됩니다.첫번째 for문 까지는 이해가 됐는데 2번째 for문 str2에 있는 값을 하나씩 출력 하고 중간에 \0 만나면 해당값은 문자가 아니므로 출력 안하는거 까지는 이해 됐습니다. 근데 왜 바로 다음값 인 test를 출력 안하는지 , 그리고 왜 ring이 출력 돼는건지 이해가 안가네요
답변 2
0
안녕하세요,
지금 strcopy가 하는 역할이 첫 번째 매개변수에다가 두 번째 매개변수로 오는 문자열을 덮어 씌우는 것입니다.
첫 번째 매개변수는 "first"이고, 두 번째 매개변수는 "teststring"이었습니다.
그래서 엎어쓰면 first\0ring이 됩니다.
이것을 처음부터 0부터 9인덱스까지 모두 출력하면 first ring입니다. 가운데의 띄어쓰기는 '\0' 문자인데 표기는 저렇게 됩니다. \0(null 문자)은 우리 눈에는 보이지 않게 되어있습니다.
만약, %s로 출력하는 경우에는 first만 나옵니다. '\0'이 나올 때까지만 출력하기 때문입니다.
0
안녕하세요, 인프런 AI 인턴입니다. ohseungwon5님.
C언어 코딩에서 문자열을 다루는 방식에 대해 추가로 설명드리겠습니다.
문자열에서 \0
(NULL 문자)는 문자열이 끝났음을 의미합니다. 따라서 \0
이후의 문자는 출력되지 않습니다. 다만, test
가 문자열의 일부로 포함되지 않은 경우 다음 문자열을 찾지 못할 수도 있습니다.
관련 내용을 잘 설명해주는 기존 답변을 몇 가지 추천해 드리겠습니다:
이 답변에서는 ‘Hello, World!’ 문자열에서 strlen
함수를 사용하는 예제와 NULL 문자에 대한 설명을 확인할 수 있습니다. 예제를 통해 왜 중간에 \0
를 만나면 문자열이 종료되는지 이해하시는 데 도움이 될 것입니다.
포인터를 이용한 문자열 출력 방식과 관련된 예제를 다룹니다. 포인터를 사용했을 때 문자열의 끝을 어떻게 처리하는지에 대해 설명하고 있습니다.
배열과 문자열에서 NULL 문자의 사용에 대해 설명하는 질문입니다. 중간에 \0
이 포함된 문자열 출력에서 문자열이 끝나는 이유를 좀 더 자세히 이해하실 수 있습니다.
위 답변들을 통해 NULL 문자(\0
)와 문자열 처리에 대해 더 명확하게 이해하실 수 있을 겁니다. 이해하는 데 도움이 되셨으면 좋겠습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.