답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 손진주님.
C 프로그래밍에서 scanf
사용 시 주의사항이 몇 가지 있는데요, 질문에서 지적하신 몇 가지 포인트에 대해 설명드리겠습니다.
scanf_s
사용 여부: 일반적으로 scanf
는 문자열을 입력받을 때 사용할 수 있지만, 글에서 설명하신 scanf_s
는 보다 안전한 입력을 위해 사용되는 함수입니다. 사용 시, 입력받을 버퍼 크기를 명시해줘야 합니다. 하지만 이 기능은 MSVC 컴파일러에서만 지원되므로, 컴파일러에 따라 적합성을 확인해야 합니다.
sizeof
의 사용: scanf_s
를 사용하는 경우, 마지막 인자로 입력 버퍼의 크기를 지정해야 합니다. 예를 들어, scanf_s("%s", str, sizeof(str));
같이 버퍼 크기를 올바르게 지정해야 합니다. 하지만 기본 scanf
에서는 이 인자 없이 사용해야 합니다.
버퍼 오버플로 방지: 문자열 입력 시 scanf
는 공백이나 버퍼 크기 초과 등으로 인한 버퍼 오버플로우 취약성이 있으므로, 이러한 문제를 피하기 위해 fgets
와 같은 함수를 사용하는 것이 좋습니다.
관련 문제에 대한 해결 방법을 더 잘 이해하시기 위해, scanf_s에서의 sizeof를 참고하시면 도움이 될 것 같습니다.
질문에서 제공된 이미지의 코드가 scanf_s
를 사용하는 방식이라면, 위 설명대로 사용해야 올바르게 작동할 것입니다. 또한, 컴파일러에 따라서는 scanf_s
의 사용이 제한될 수 있어 조심해야 합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.