inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

배열과 문자열

여러가지를 넣은 자료형

해결된 질문

141

youngsu616

작성한 질문수 15

0

여러가지를 넣은 자료형

2:10에 \

//문자열 보면 chararray[5] = {'a','b','c', d, e } 되어 있는데

칸을 5개로 제한하고 5칸에 null값 포함해서 6개가 넘어버리면 오류가 뜨지 않나요? 마지막엔 null값이 들어간다고 배워서요

python java c 정보처리기사

답변 3

0

주말코딩

말씀하신 것이 맞긴한데, 또 어떻게 보면 아니긴 합니다.

 

원칙적으로 '\0'을 넣어서 완성시키긴 하는데, 저것도 정상적으로 동작합니다.

원래 제대로 하려면 맨 마지막에 null 문자를 넣는게 맞습니다.

 

null이 생략되어서 태어나는 경우는 아예 문자열 포인터(배열)에 " "로 문자열을 할당해버리는 것입니다.

#include <stdio.h>

int main() {
    // 문자열 선언
    char str[] = "Hello";

    // 문자열 출력
    printf("The string is: %s\n", str);

    // 각 문자를 하나씩 출력하고 마지막에 '\0'이 있는지 확인
    for (int i = 0; i < sizeof(str); i++) {
        printf("str[%d] = '%c' (ASCII: %d)\n", i, str[i], str[i]);
    }

    return 0;
}

출력값:

The string is: Hello

str[0] = 'H' (ASCII: 72)

str[1] = 'e' (ASCII: 101)

str[2] = 'l' (ASCII: 108)

str[3] = 'l' (ASCII: 108)

str[4] = 'o' (ASCII: 111)

str[5] = ' ' (ASCII: 0) // '\0'의 ASCII 값은 0

0

youngsu616

sizeofstrlen의 차이점이라고 이해 했습니다.

근데 2:10에서는 sizeofstrlen이 명시되어 있지 않은데

sizeofstrlen 를 어케 구별하나요?

 

 

0

주말코딩

sizeof하고 strlen은 함수 이름입니다.

sizeof하면 [5]로 선언한 메모리 사이즈를 재는거라 5로 나오고, strlen을 하면 null 문자가 없어서 부정확하게 출력될 수 있습니다.

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

int main() {
    // 문자 5개짜리 배열 선언 (널 문자는 포함되지 않음)
    char str[5] = {'h', 'e', 'l', 'l', 'o'};

    // sizeof: 배열의 전체 크기를 바이트 단위로 반환
    // strlen: 문자열의 길이를 반환 (널 종단문자가 없기 때문에 정확하지 않음)
    printf("sizeof: %d\n", sizeof(str));
    printf("strlen: %d\n", strlen(str));

    return 0;
}

온라인 컴파일러 상으로는

sizeof: 5

strlen: 8

이렇게 출력되네요.

 

이 예제에서는 크게 신경쓰지 마시고 넘어가면 됩니다.

저렇게 시험에 나오지 않습니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. youngsu616님.

질문해 주신 내용은 C 언어에서 문자열을 처리할 때 발생하는 일반적인 문제입니다. char형 배열에서는 문자열의 마지막에 널 문자가 자동으로 추가되므로, 배열의 크기를 설정할 때 이 널 문자를 저장할 공간도 함께 고려해야 합니다.

예를 들어, char array[5] = {'a', 'b', 'c', 'd', 'e'};와 같이 정의했을 경우, 배열 크기가 5로 고정되어 있기 때문에 마지막 널 문자(‘\0’)를 포함할 수 없으므로 문자열로 사용할 수 없습니다. 실제 문자열로 사용하려면 배열 크기를 6으로 설정하여 널 문자를 포함할 수 있도록 해야 합니다. 예를 들어, char array[6] = {'a', 'b', 'c', 'd', 'e', '\0'};와 같이 배열을 선언하면 문자열로 사용할 수 있습니다.

관련된 이전 게시물을 통해 더 구체적인 도움을 받을 수 있습니다:

이 답변이 youngsu616님의 이해에 도움이 되기를 바랍니다. 문제가 발생할 경우, 배열 크기를 널 문자까지 포함하여 고려해야 한다는 점을 꼭 기억해 주세요.

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

필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)

0

39

2

26년 1회 실기 해설 강의

0

54

2

53번 4-1 자료 오류 있는 것 같습니다.

0

70

2

7번문제

0

59

2

C언어 변형문제 9번문제 Pdf 수정요청

0

47

2

메서드 오버드라드

0

47

2

실수

0

46

1

공부 우선순위 우선강의 알려주세요

0

87

1

생성자 호출순서 강의 10번 문제 30분대 질문입니다

0

48

2

25년 2회 기출 5:40 질문입니다.

0

40

2

모의고사1회 3번 파이썬문제

0

73

2

C언어 출제변형 6번 문제

0

50

2

c언어 출제변형 강의 질문

0

31

2

28:40

0

33

2

C :  언어 배열과  문자열 수업자료

0

29

2

파이썬 리스트, 딕셔너리 질문

0

41

2

모의고사 관련 질문 건

1

68

3

자료 내용 오류

0

63

2

정적 변수, 정적 메서드(static) v2

0

48

2

v1.2 와 v0.91 PDF

0

101

1

업캐스팅 (부모형태, 자식생성자)

0

51

2

정보처리산업기사 준비중입니다.

0

74

2

실기 D -6

0

105

2

(기출) 2024년 2회 기출문제 - 이론 포함 22분32초 질문입니다

0

57

3