나는 최종 단계로 인쇄되도록 서식이 지정된 문자열을 점진적으로 작성해야하는 프로그램을 작성 중입니다. 문자열에는 문자열이 형성되는 동안 수집되는 숫자가 포함됩니다. 따라서 출력 문자열에 형식화 된 문자열 조각을 추가해야합니다.sprintf()를 사용하여 형식화 된 문자열을 연결하는 것이 안전합니까?
하나 똑바로 앞으로 방법은 this answer에서 보여준 것처럼 다음, strcat()
을 사용하여 출력 문자열로 연결된하는 포맷 단편을 포함 임시 문자열로 sprintf()
을 사용하는 것입니다.
더 복잡한 방법은 새 조각을 추가 할 때 sprintf()
을 현재 출력 문자열의 끝으로 가리키는 것입니다. 이것은 here입니다.
이제 기술적 출력 문자열의 끝에 단편을 연결하는복사가 중복 문자열 사이에 발생하는 경우는, 동작이 정의되지 않은 입니다 :
MSVC
sprintf_s()
function (및sprintf()
의 다른 변형)에 대한 도움말 페이지 상태.
sprintf()
을 이용하여 상기 제 1 스트링의 일부로 간주된다 착신
NULL
을 덮어 의미한다. 따라서이 동작은 겹치는 문자열 범주에 해당됩니다. 이 기술은 잘 작동하는 것처럼 보이지만 실제로 안전합니까? 이 질문에
일부 동작이 정의되지 않았다고 말하면 해당 동작에 대해 아무 것도 가정 할 수 없습니다. 오늘은 효과가있을 수 있지만 내일에는 행동이 예고없이 변경됩니다. –