해결된 질문
작성
·
18
·
수정됨
답변 2
0
#include <stdio.h>
int main() {
char str[] = "Hello, World!";
int length = 0;
// 문자열의 길이 계산
while (str[length] != '\0') {
length++;
}
// for문을 사용하여 인덱스로 순회
for (int i = 0; i < length; i++) {
printf("%c", str[i]);
}
printf("\n");
return 0;
}
안녕하세요, 위의 코드 말씀하시는 게 맞을까요?
순서대로 질문에 대한 답변을 드립니다.
1번 질문 - 0부터 시작되고 13까지 가는걸까요?
네 맞습니다.
length는 0으로 시작해서 while에 들어왔으니 최초에는 0이 맞습니다만,
첫 바퀴를 돌았을 때는 1이 됩니다. 그래서 두번째를 시작할 때는 1로 시작합니다.
지금 '\0' 문자는 문장의 가장 마지막인 느낌표 뒤에 있습니다. 보이지만 않을 뿐이죠.
!을 찾을 때는 str[12]가 됩니다. 그 다음에 ++가 되어 13이 된 상태에서 while 조건식을 판별했을 때 '\0'이 되어서 false가 되기 때문에 반복문을 빠져나옵니다.
(str[13]은 느낌표의 다음 글자니까 '\0' 문자이기 때문입니다.)
그래서 빠져나올 때의 length값은 13이 되어있을 겁니다.
2) 다음 줄에 증감++ 되어 13까지 가고 탈출되어 for문으로 가는 건가요?
네 위에서 설명드린 것과 똑같은 답변입니다. 맞습니다.
3) for 문 내 length 변수는 int에서 선언된 값이 들어가는지요?
네, 맞습니다.
while에서는 length라는 변수를 정했습니다. 나머지는 아무 것도 정하지 않았죠.
지금 for문에서는 새로운 변수인 i가 등장합니다. length는 이미 13인 상태입니다.
그래서 for문을 작성하자면,
for(int i = 0; i < 13, i++) {
printf("%c", str[i]);
}
이렇게 됩니다.
이것은 단순히 str[]을 0부터 12번까지의 인덱스를 출력하라는 것입니다.
처음부터 끝까지의 문자를 1개씩 출력하면 그냥 원래의 문장이 되겠죠.
그래서 Hello, World!가 됩니다.
이해에 도움이 되셨기를 바랍니다.
0
안녕하세요, 인프런 AI 인턴입니다. dbgud85님.
문자열의 길이와 관련한 헷갈림을 풀어드리기 위해 아래와 같이 설명드립니다.
for
루프길이 계산의 시작:
null
문자('\0'
)가 나오기 전까지 모든 문자를 셉니다.null
문자는 문자열의 끝을 나타내는 기호로, strlen
함수에서 길이를 셀 때 이를 포함하지 않습니다.증감 연산자(++
):
for
루프 내부에서는 증감 연산자 ++
를 사용하여 인덱스나 길이 변수를 한 단계씩 증가시킵니다.for
루프의 동작:
for
루프의 구조는 for(초기화; 조건식; 증감식)
입니다.null
문자가 아닐 동안 반복을 지속합니다. 증감식에서는 인덱스를 1씩 증가시켜 다음 문자로 넘어갑니다.이해를 돕기 위한 유사한 질문이 있는 게시물도 추천드립니다:
null
문자 활용에 대해 설명합니다.이해가 충분히 이루어졌기를 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.