inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

배열과 문자열

배열과 문자열

해결된 질문

179

ghkd1118

작성한 질문수 9

0

10:11초 정도질문입니다.

[]대괄호안에 숫자가 들어가면, 문자배열의 공간수로 이해하였는데, 공란은 무슨의미인가요?

공란이있거나 숫자가 았거나 똑같이 풀이가되어 헷갈립니다.

그리고 %s 변수는 널값 ‘\0’ 이 나올때까지 문자 배열대로 쭉 출력하여야 하는데, 이게 항상 생략되는건가요? 생략되는 경우가 따로있나요?

python java c 정보처리기사

답변 1

0

주말코딩

안녕하세요,

 

  1. 공란 []의 경우에는 뒤에 들어오는 변수에 딱 맞춰서 알아서 변동되는 크기를 가집니다. 이 경우에 몇 개의 문자를 넣어도 그것에 맞춰서 배열 공간을 잡아줍니다.

#include <stdio.h>

void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() {
    int numbers[] = {1, 2, 3, 4, 5};  // 배열 크기는 자동으로 계산됨 (5개 요소)
    int size = sizeof(numbers) / sizeof(numbers[0]);  // 배열의 크기 계산

    printArray(numbers, size);  // 배열과 크기를 함수로 넘김

    return 0;
}

 

  1. '\0'은 우리 눈에 보이지 않고 프로그램 내부에서 가지고 있기 때문에 항상 생략되어 있다고 보시면 됩니다. 만약에 초기화를 변수 = "문자열" 로 했다면 무조건 맨 끝에 '\0'이 들어가 있습니다.

그런데, 이렇게 할 수도 있습니다. NULL을 명시적으로 넣지 않는 것입니다.

 

#include <stdio.h>

int main() {
    // 문자 배열 선언
    char str[6];  // 문자 5개를 넣을 공간을 마련, 마지막 null 문자는 넣지 않음
    int i;

    // 반복문을 통해 문자 배열에 'A'부터 'E'까지 넣음
    for (i = 0; i < 5; i++) {
        str[i] = 'A' + i;  // 'A', 'B', 'C', 'D', 'E' 순서대로 저장
    }
    // null 문자('\0')는 넣지 않음

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

    return 0;
}

이 경우에는 정상적으로 출력이 되긴 합니다만, 컴파일러의 버전이나 프로그램 설계에 따라서 쓰레기값(이상한 값)이 출력될 수 있습니다.

 

대부분의 경우 정상적으로 출력이 되긴하나, 그렇지 않을 수도 있다는 이야기죠.

그래서 보통은 문자를 여러 개를 넣어서 문자열로 만들 때는 가장 마지막에 문자가 끝났다는 의미로 '\0'을 넣곤 합니다.

 

그리고 엄청나게 큰 배열을 먼저 선언하고(예를 들어 100) 거기에 5개의 문자만 넣을 때도 문제가 됩니다. 이 경우에는 어디가 끝인지 잘 모르기 때문에 6번째에 '\0'을 넣어서 문자열이 완료되었다고 표기하기도 합니다. 최근 이 예제가 기출문제로 등장했습니다.

 

이해에 도움이 되셨을까요?

이론 공부법 요약본 버전 업데이트 문의

0

11

1

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

0

52

2

조건 반복문 질문: for 문 ?

0

62

1

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

0

79

1

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

0

75

2

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

0

87

2

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

0

148

2

262 정처기 실기 C언어코딩

0

46

1

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

0

78

2

static 변수 질문입니다.

0

61

2

파이썬 4강 질문입니다.

0

68

2

모의고사 1회 3번문제

0

88

3

41강 30:10

0

67

2

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

0

89

2

부모의 생성자 관련 질문

0

66

2

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

0

89

3

41강 11:23

0

59

2

4강파이썬 질문입니다

0

54

2

try-catch 핸들러명

0

65

2

36강 3:48

0

64

2

35강 18:27

0

66

2

자식 코드 내 super() 생략

0

60

2

출력질문

0

75

2

31강 4:06

0

66

2