inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

홍정모의 따라하며 배우는 C언어

4.3 문자열이 메모리에 저장되는 구조

str3를 출력하던중 생긴 오류와 궁금증

338

젬싼jamssan

작성한 질문수 10

0

#include <inttypes.h>


char str3[10] = "Hello, world"//array size is not enough
   
printf("%s\n", str3);
결과값
Hello, worHi
질문1: 비쥬얼스튜디오코드를 사용하여 코딩중인데 저는 영상처럼 "Hello, world" 커서를 대었을
 때 교수님의 화면처럼 13이 뜨지 않네요 코드라서 안 뜨는 건가요??
 저는 (char [10])"Hello, wor" 이런식으로 뜹니다
질문2: "Hello, world";의 위치에 커서를 대었을 때는 (char [10])"Hello, wor" 이런 식으로 
 미리보기가 뜨는데 왜 미리보기와 다른 Hello, worHi이 출력되는 것이고, 결과값 중의 
 'Hi'는 왜 출력이 되는 것인가? 
질문3: 영상과 달리 제 코드는 어떻게 10으로 정해진 사이즈를 넘어서 출력이 될 수 있는 것인가??
 
항상 잘 듣고 있습니다 ㅎㅎ 이해하기 쉽게 잘 설명해 주셔서 감사해요
코드 전문

#include <stdio.h>




int main()

{   

    int a = 1;

    int int_arr[10] = { 0123456 ,7 ,8 ,9 };



    printf("%i %i %i\n"int_arr[0], int_arr[1], int_arr[9]);



    //printf("%i\n", int_arr[10000]); int_arr[10]이므로 9를 넘어선안됨 [지정사이즈 넘으면 안됨]

    

    char c = 'a';

    char str1[10] = "Hello"//null character Hello(\0)

    char str2[10] = { 'H''i'}; //문자열 저장하는 방식이 두가지



    printf("%c\n", c);

    printf("%s\n", str1);

    printf("%s\n", str2);



    printf("%hhi %hhi %hhi %hhi %hhi\n",

    str2[0], str2[1], str2[2], str2[3], str2[4]); //배열로 출력시 강제로 0을 출력시킴



    char str3[10] = "Hello, world"//array size is not enough

    char str3[20] = "Hello, \0world";

    printf("%s\n", str3);

    printf("%s\n"str3[10]);

    printf("%s\n"str3[11]);




    return 0;

}


c

답변 2

0

logt

(memo. 뒷 분들을 위해서...)

해당 코드 전문을 직접 복사해서 테스트해보았으나, 컴파일 에러 발생.

문제점1)

1. char 메모리 공간이 [10]인데, 대입시킨 해당 문자열은 10을 넘어감으로 컴파일 에러가 발생한다. 따라서 결과값을 도출해낼수도 없는 상태인데, 결과값이 "Hello, worHi"로 나온 것은 무언가 작성하신 코드에 문제가 있어 보입니다. VS버전의 차이인지 모르겠으나, 신기하게도 강제 실행이 되어 출력문을 아래에 남깁니다.

문제점2)

2. char str3가 중첩되어 컴파일 에러가 발생.

맨 위 사진에 보시다시피, str3[10]과 str3[20]으로 str3가 두 개 존재함으로 컴파일 에러 발생합니다. 따라서 컴파일 실행을 시킬 수 없는 상태. 마찬가지로 결과값을 출력할 수 없는 상태.

감사합니다 :)

0

홍정모

1. 2. 비주얼 스튜디오 코드는 문서 편집기에 가깝습니다. 비쥬을 스튜디오는 IDE라서 여러가지 보조 기능이 많습니다.

3. 이유는 직접 찾아보셔야할 것 같네요. 여러가지로 실험해보시는 것을 권장합니다.

Export template 안됨

1

26

2

완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.

1

56

3

main 함수에서 왜 int만 선언이 되는걸까요

1

57

2

8비트 2진수 변환시 왜 1을 더해야하나요?

1

55

2

혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?

1

49

1

프로토타입과 함수간의 인자 불일치

1

73

2

12.12 헤더 관련 질문

1

60

2

Visual Studio Community 2026 사용 문의

1

138

2

Q. 15:30, 부호가 있는 8비트 정수 질문

1

61

2

getchar(), putchar()

1

94

3

강의자리ㅛ

1

80

2

비주얼스튜디오코드로 공부해도 상관없나요?

1

114

2

소스파일안에 여러 파일

1

76

2

F5와 F7의 차이

1

79

2

c = TWO * (a+b); 에서 a와 b는?

1

58

2

; 세미콜론을 붙이는 기준에 문의

1

70

1

Step over 기능 문의

1

53

2

2.6 강의 따옴표 출력 규칙 문의

1

76

2

int main 함수 관련 오류 문의

1

67

2

13.4 words[0]

0

61

2

11.7 함수를 구현해 봤습니다.

1

62

2

11.6 직접 strcmp와 strncmp를 구현해 보았습니다.

1

65

2

11.6 my_strcat과 my_strncat을 구현해봤습니다.

1

53

2

11.6 fit_str함수를 구현해 봤습니다.

1

54

2