warning: the 'gets' function is dangerous and should not be used.
gets 함수의 사용이 위험하며 사용하지 말것을 경고하는 문구인데, 프로그램 동작에는 큰 영향(?)을 주지 않으므로, 무시하고 사용할 수 있다.
하지만 gets 함수를 사용하는 프로그램은 보안상에 취약점이 있을 수 있으므로 해당 함수를 fgets로 대체하여 사용할것을 메뉴얼에서 공지하고 있다.
버그
결코 gets()를 사용하지 마라. gets()가 얼마나 많은 문자를 읽어들일 지사전에 알 수 없고, 그로 인해 gets()가 버퍼의 용량을 넘어서는 범위에 문자를 저장할 위험이 있다. 그러므로 gets()를 사용하는 것은 컴퓨터 보안에 치명적인 타격을 줄 수 있다. (버퍼 오버 플로우를 이용한 해킹이 가능하다. - 역주) 대신 fgets()을사 용 하는 것이 좋다.
여 기에서 설명한 함수의 입력 스트림을 stdio 라이브러리의 로우-레벨 시스템 콜인 read()의 파일 디스크립터와 공유해서사용하는 것은 결코 추천할 만한 일이 아니다. 그 결과가 정의되어 있지 않아서 의도하지 않은 방향으로 동작할 가능성이 크기 때문이다.
BUGS
Never use gets(). Because it is impossible to tell without knowing the data in advance how many characters gets() will read, and because gets() will continue to store characters past the end of the buffer, it is extremely dangerous to use. It has been used to break computer security. Use fgets() instead.
결코 gets()를 사용하지 마라. gets()가 얼마나 많은 문자를 읽어들일 지사전에 알 수 없고, 그로 인해 gets()가 버퍼의 용량을 넘어서는 범위에 문자를 저장할 위험이 있다. 그러므로 gets()를 사용하는 것은 컴퓨터 보안에 치명적인 타격을 줄 수 있다. (버퍼 오버 플로우를 이용한 해킹이 가능하다. - 역주) 대신 fgets()을사 용 하는 것이 좋다.
여 기에서 설명한 함수의 입력 스트림을 stdio 라이브러리의 로우-레벨 시스템 콜인 read()의 파일 디스크립터와 공유해서사용하는 것은 결코 추천할 만한 일이 아니다. 그 결과가 정의되어 있지 않아서 의도하지 않은 방향으로 동작할 가능성이 크기 때문이다.
BUGS
Never use gets(). Because it is impossible to tell without knowing the data in advance how many characters gets() will read, and because gets() will continue to store characters past the end of the buffer, it is extremely dangerous to use. It has been used to break computer security. Use fgets() instead.
따라서 gets를 프로그램에서 사용하고 있다면 fgets로 바꾸기를 바란다.
char *fgets(char *s, int size, FILE *stream);
콘솔로부터 문자열을 입력받는 형태이므로 FILE stream을 "stdin"으로 지정해주면 된다.