목록언어/C, C++ (22)
개발하는 리프터 꽃게맨입니다.
[C++] scanf 가 위험한 이유, scanf 와 cin 의 차이점
scanf는 C 언어의 입력 함수입니다. 만약, 7 바이트 사이즈의 char형 string 변수에 'Crabman' 을 입력하면 어떻게 될까요? #define _CRT_SECURE_NO_WARNINGS #include using namespace std; int main() { char string[7]; scanf("%s", string); //Crabman 을 입력하고 싶어! return 0; } 정답은 '오류가 발생한다.'입니다. 보통 프로그램에서 '문자열'은 종단에 '널문자 (\0)'를 추가하여 문자열의 끝맺음을 해줍니다. H e l l o \0 이런 느낌이죠. 그런데, 기본적으로 scanf는 입력 버퍼의 최대 크기를 모릅니다. 그렇기에 7바이트의 버퍼에 문자열을 할당하는 순간 펑! '배열의 크기..
언어/C, C++
2023. 12. 24. 23:31