programing

scanf와 scanf_s의 차이

goodsources 2023. 11. 2. 21:41
반응형

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

반응형