inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

배열과 문자열

배열과 문자열 13:54초 출력결과 문의

해결된 질문

268

김현지

작성한 질문수 2

0

안녕하세요 선생님!

배열과 문자열 부분 문의가 있어 질문드립니다.

strlen함수를 사용하여 문자 하나씩 출력 부분인데요.

char str[] = "Hello, World!" ; // 문자열 선언 후

//5. strlen 함수를 사용하여 문자 하나씩 출력

printf("\n5. ");

int len = strlen(str);

for(int i = 0; i < len; i++) {

printf("%c", str[i]);

}

}

제가 풀면

5. Hello, World

인 것 같은데 이해가 안된 부분이 있는지하여 문의드려요.

H e l l o , W o r l d !

0 1 2 3 4 5 6 7 8 9 10 11 12 (*6은 띄어쓰기)

str len = 12 이라면

for(int i = 0; i < len; i++) {

for(int i = 0; i <12; i++) { 이 되고, i=11까지만 반복된다면

5번 예제의 출력값은

  1. Hello, World

    가 되는 것 같은데 문자열 뒤 첫번째 null 값까지 len 함수가 적용되는지 궁금하여 문의드립니다.

python java c 정보처리기사

답변 1

2

주말코딩

안녕하세요, Hello, World! 의 길이는 13입니다.

H 1
e 2
l 3
l 4
o 5
, 6
7
W 8
o 9
r 10
l 11
d 12

! 13

 

0부터 세셨다는 말씀은 인덱스로 접근했다는 것인데, 인덱스의 경우 0부터 시작하니 맨 마지막이 12 인덱스가 맞습니다. 13 이전까지만 true니까 12까지가 나오면서 전체를 출력하겠죠.

 

한 가지 더 말씀드리자면,

strlen은 순수 문자열의 길이만 재고, sizeof는 사이즈까지재서 '\0'까지 포함한 크기가 나옵니다.

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Hello, World!";
    int length = strlen(str);
    int size = sizeof(str);
    printf("%d, ", length);
    printf("%d ", size);

    return 0;
}

이 경우에는 출력값이 13, 14로 나옵니다.

혹시나 문제가 다른 함수로 나올 수 있으니 알아두시면 좋겠습니다.

 

만약 반복문으로 %c로 출력하면서 '\0'을 만나기 전까지 세라고 하면, 문자열 길이인 13을 사용해야합니다.

NULL을 만나면 바로 그 즉시 false가 되어서 반복문 아래를 수행하지 않기 때문입니다.

 

감사합니다.

1

김현지

제가 인덱스랑 strlen 개념을 혼동하면서 생긴 질문인 것 같습니다. 이해가 되었습니다! 빠른 답변 감사합니다!

주말 잘 보내세요!

정처기 필기 준비할때 이 이론을 다시 외워도 될까요?

0

35

2

조건 반복문 질문: for 문 ?

0

57

1

정처기 26-2회. 9번 질문드립니다!

0

77

1

이론 보면서 질문이 있습니다.

0

70

2

정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문

0

83

2

유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)

0

139

2

262 정처기 실기 C언어코딩

0

43

1

정보처리기사 262 실기 Hash(해시) 질문

0

73

2

static 변수 질문입니다.

0

60

2

파이썬 4강 질문입니다.

0

67

2

모의고사 1회 3번문제

0

85

3

41강 30:10

0

64

2

이론 공부법 질문 있습니다.

0

85

2

부모의 생성자 관련 질문

0

62

2

시험지 문제에 필기해도 되나요?

0

85

3

41강 11:23

0

54

2

4강파이썬 질문입니다

0

51

2

try-catch 핸들러명

0

63

2

36강 3:48

0

62

2

35강 18:27

0

65

2

자식 코드 내 super() 생략

0

59

2

출력질문

0

72

2

31강 4:06

0

63

2

파이썬 학습자료가 강의 자료와 다릅니다.

0

93

3