scanf와 scanf_s의 차이
사이의 차이점은 무엇입니까?scanf
그리고.scanf_s
? 저는 대학교에서 배우고 사용하고 있습니다.scanf
, 하지만 제 개인 컴퓨터인 비주얼 스튜디오에서는 계속 경고를 보내고 있습니다.
error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead.
그리고 나는 모든 것을 바꿔야 합니다.scanf
로.scanf_s
프로그램이 구축되지 않을 겁니다(Visual Studio 2013을 사용하고 있습니다)
이것은 특히 마이크로소프트 컴파일러에 속하는 기능입니다.
scanf
원래는 입력하는 콘솔 입력을 읽고 변수 유형에 할당합니다.
다음과 같은 배열이 있는 경우first_name[5]
그리고 당신은scanf
"알렉스"의 경우에는 문제가 없습니다.동일한 어레이를 가지고 있고 "알렉산더"를 할당하는 경우 어레이에 포함된 5개의 슬롯을 초과하는 것을 볼 수 있으므로 C는 어레이에 속하지 않는 메모리에 계속 기록하고 first_name에 속하지 않는 메모리 슬롯에 액세스하여 기록하려고 할 경우 프로그램이 충돌하거나 충돌하지 않을 수 있습니다.여기가 이 곳입니다.scanf_s
들어옵니다.
scanf_s
는 버퍼 크기를 지정하고 실제로 입력의 한계를 제어하여 건물 전체를 충돌시키지 않을 수 있는 인수(파라미터)를 가지고 있습니다.
scanf_s()
C99 표준(또는 이전 표준)에 의해 설명되지 않습니다.
C99(또는 이전)를 대상으로 하는 컴파일러를 사용하려면 다음을 사용합니다.scanf()
.
C11 Standard(그리고 나중에는 C11 Standard)의 경우scanf_s()
보다 사용하기가 훨씬 어렵습니다.scanf()
버퍼 오버플로에 대한 보안을 개선합니다.
C11fscanf_s()
: http://port70.net/ ~nsz/c/c11/n1570.html#K.3.5.3.2
~~~~~~~~~~~~~~~~
만약 당신이 C99 컴파일러를 가지고 있다면 다음을 제공합니다.scanf_s()
확장자로서 휴대성을 잃지 말고 컴파일러 문서를 확인해 보십시오.
이 오류를 방지하려면 <>: <_CRT_SECure_NO_WARNINGS> 사이의 항목을 한 자리에 붙여넣는 것이 좋습니다.솔루션 탐색기에서 프로젝트를 클릭하고 속성을 클릭하면 해당 장소로 바로 이동할 수 있습니다.그런 다음 구성 속성으로 이동한 다음 c/c++, 전처리기로 이동합니다.그런 다음 전처리기 정의에서, 모든 것이 끝난 후에, 세미콜론을 추가하고 그것을 붙여넣습니다. 그런 다음 apply를 누르고 ok를 누릅니다.당신의 문제는 해결되어야 합니다.
언급URL : https://stackoverflow.com/questions/21434735/difference-between-scanf-and-scanf-s
'programing' 카테고리의 다른 글
사용자 입력을 허용하지 않는 텍스트 입력이 있는 jQuery Datepicker (0) | 2023.11.02 |
---|---|
C#을 사용한 MySQL에 대한 매개변수화된 쿼리 (0) | 2023.11.02 |
MySQL 데이터베이스에 255 char 이상 저장하는 방법? (0) | 2023.11.02 |
C#에서 XML 파일을 읽고 구문 분석하려면 어떻게 해야 합니까? (0) | 2023.11.02 |
특급 JS내의 여만 (0) | 2023.11.02 |