[C] C언어/C언어

[C언어 fgets 으로 에러해결] warning: implicit declaration of function 'gets'; did you mean 'fgets'? warning: the 'gets' function is dangerous and should not be used

개발자혜콩 2026. 2. 9. 15:13

1.⚠️ 발생한 에러 메시지

  1. Warning: implicit declaration of function 'gets'  → 함수 선언이 없는데 썼어
  2. Warning: the 'gets' function is dangerous and should not be used. → 이 함수는 위험하니 쓰지 마

문제 소스코드

 

에러메세지

 

2. 원인 분석

-  gets()는 왜 위험할까?

malloc(80)으로 메모리를 80바이트나 할당했더라도, gets()는 그 크기를 전혀 체크하지 않습니다.

만약 사용자가 100바이트를 입력하면? 준비된 80바이트를 넘어서 메모리의 다른 영역을 침범(Buffer Overflow) 해버립니다.

이는 프로그램의 강제 종료나 해킹의 원인이 됩니다.

 

3. 해결 방법

- fgets() 도입과 올바른 컴파일

gets 대신 fgets를 사용하면 메모리 크기를 명시할 수 있어 안전합니다.

수정 후 코드
수정 후 터미널 창1
수정 후 터미널 창 2