#include

int main(void)

{

    char name[20];

    gets(name);

    puts(name);

    return 0;

}

C언어를 처음 배워보는 학생입니다.

문자열 변수에 대해 이해하기 위해 다음과 같은 예제를 연습해봤는데요,

수업 도중 name 변수에 20byte보다 큰 값을 넣으면 어떻게 될까 궁금해서 시험해보았습니다.

CppDroid라는 모바일 앱을 통해 실행해본 결과 name변수에 아무리 긴 글자를 입력해도 잘 출력이 되었습니다.

여기까지는 이해가 되는데 codeblock에서 같은 코드를 쳐보니 큰 문제가 발생했습니다.

31글자 이하의 글자까지는 잘 출력이 되었고 33글자 이상부터는 오류가 발생하였습니다.

하지만 정확히 32글자를 입력했을 때는 puts()함수로 name의 값이 출력된 후 프로그렘이 종료되지 않고 다시 gets()함수가 실행되었습니다.

추가로, name을 char name[19]로 선언했을 때는 32글자를 입력했을 때 말씀드린 오류가 일어났습니다.

프로그래밍을 잘 하는 친구가 디버깅 기능으로 확인해보니 return 0;까지 프로그램이 실행된 후 다시 main함수가 처음부터 실행된다고 하네요...

왜 이런 일이 일어난 걸까요?

p.s) 제가 3월달에 python배우기 시작해서 이제야 다 때고 C언어를 배우는 중이라 글에 용어 오류가 있을 수 있는데 귀엽게 봐주시고 지적해주세요.