마이크로소프트 사에서는 자주 사용하는 개발 IDE인 Visual Studio에서 scanf 사용을 권하지 않는다. 하위 버전에서는 경고를 띄우지만 최상위 버전에서는 SDL(security development lifecycle) 검사가 체킹 되어 있어 비주얼 스튜디오에서만 지원하는 scanf_s를 사용하지 않으면 오류가 뜨게 되어있다. scanf_s()는 문법은 scanf()와 다를게 거의 없다. 그러나 문자열을 입력받는 서식문자 %s를 사용할 땐, 저장할 문자열 뒤에 최대 문자열 입력 개수를 인자로 한 개 더 넣어주어야 한다. 1 2 char name[10]; scanf("%s", name); cs 이전 scanf 사용이 이랬었다면, 1 2 3 #define MAX_LEN 10 char name[MAX_LEN]; scanf_s("%s", name, MAX_LEN); cs scanf_s를 사용해야 할 때 이런 식으로 인자를 한 개 더 추가해 주어야 한다. 참고로 비주얼 스튜디오에서 scanf_s를 사용할 때 문자열 입력을 받는 때에 문자열 길이를 지정해 주지 않아도 문법 오류가 뜨지 않는데, 실행했을 때는 오류가 난다. 문법 오류가 나지 않아도 문법 오류이다. 이는 오묘한 문법때문인데, scanf_s를 이렇게 사용할 때의 케이스가 있기 때문이다. 1 2 3 4 5 #define MAX_LEN 10 char name[MAX_LEN]; int grade; int age; scanf_s("%s %d %d", name, MAX_LEN, &grade, &age); cs 문자열을 입력 받을 ...
댓글
댓글 쓰기