1.⚠️ 발생한 에러 메시지
- Warning: implicit declaration of function 'gets' → 함수 선언이 없는데 썼어
- 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를 사용하면 메모리 크기를 명시할 수 있어 안전합니다.



'[C] C언어 > C언어' 카테고리의 다른 글
| [C언어 학습기록] 스택(Stack) 구현하다 현타 온 날: void와 매개변수 완벽 정리 (0) | 2026.02.11 |
|---|---|
| [C언어 자료구조 에러수정] ld: multiple definition of stack 해결 방법 (0) | 2026.02.11 |
| [C언어 에러수정] 세그멘테이션 오류 (코어 덤프됨) (0) | 2026.02.09 |
| [ C언어 ] 연산자 응용문제 - 시간 변환기 (0) | 2026.02.04 |