인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

dbgud85님의 프로필 이미지
dbgud85

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

포인터의 개념과 활용

15:50초 length 코드 처리순서 질문

해결된 질문

작성

·

18

·

수정됨

0

15:50초에 3가지 예시의 모든 출력값이

hello, world! 라고 하셨는데요

마지막 예시인 length 처리순서가 잘 이해가 안갑니다

1)문자열 길이 계산에서 0부터 시작되고 13까지 가는건가요?

(공백, 콤마, 느낌표까지 포함)

2) 다음 줄에 증감++ 되어 13까지 가고 탈출되어 for문으로

가는건가요?

3) for 문 내 length 변수는 int에서 선언된 값이 들어가는지요?

답변 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 루프

  1. 길이 계산의 시작:

    • 문자열의 길이를 계산할 때, 일반적으로 인덱스 0부터 시작하여 각 문자를 하나씩 순회합니다. 이 과정에서 알파벳 문자, 공백, 특수 문자를 포함하여 null 문자('\0')가 나오기 전까지 모든 문자를 셉니다.
    • null 문자는 문자열의 끝을 나타내는 기호로, strlen 함수에서 길이를 셀 때 이를 포함하지 않습니다.
  2. 증감 연산자(++):

    • for 루프 내부에서는 증감 연산자 ++를 사용하여 인덱스나 길이 변수를 한 단계씩 증가시킵니다.
    • 이는 배열 내부를 순회하며 다음 문자를 가리키게 하거나, 길이를 1씩 더해주는 역할을 합니다.
  3. for 루프의 동작:

    • 일반적인 for 루프의 구조는 for(초기화; 조건식; 증감식)입니다.
    • 여기서 초기화는 보통 인덱스를 0으로 설정하고, 조건식에서는 null 문자가 아닐 동안 반복을 지속합니다. 증감식에서는 인덱스를 1씩 증가시켜 다음 문자로 넘어갑니다.

이해를 돕기 위한 유사한 질문이 있는 게시물도 추천드립니다:

이해가 충분히 이루어졌기를 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

dbgud85님의 프로필 이미지
dbgud85

작성한 질문수

질문하기