답변
당신은 내가 코드 이상 생각하지 않는다 즉, 오히려 형식 문자열로 하드 코딩보다 printf()
에
void f(const char *str, int str_len)
{
printf("%.*s\n", str_len, str);
}
'str_len' 인자는'int' 타입 (또는 더 좁은 정수 타입,'int'으로 승격 됨)을 가져야합니다. 'long','size_t' 등을 넘기는 것은 버그 일 것입니다. –
이 코드의 목적은 특히'% s '와 함께 사용하는 경우 원래 문자열의 하위 문자열을 출력하는 것입니다. 이 사용 예제에서'str'은 원래 문자열 안의 어딘가를 가리키고 (시작 부분에있을 수도 있음),'str_len'은 인쇄되어야 할 부분 문자열의 길이를 지정합니다. –
을 폭 지정자/정밀도를 전달하는 별표 (*
)를 사용할 수는 정확 그러나 (printf()
의 설명에 따라)를 .*
는 폭이 형식 문자열에 지정되지
을 의미하지만, 추가적인 정수 값을 인수로 포맷하는 인수 선행. '
따라서 인수로 전달할 수있는 너비의 문자열입니다.
표절 혐의를 피할 수 있도록 URL 상호 참조를 추가했습니다. 물론 올바른 인용문에 "The _ width _ is not ..."보다는 "_ _ precision _이 아닙니다 ..."라고되어 있습니다. –
@MattMcNabb가 지적했듯이, 해당 페이지에 대한 모든 참조는 "int * (정수 값 *)"가 정확히 "int"(또는 그것의 하위 집합)임을 강조해야합니다 -보다 직관적 인 'size_t'또는 가능한 별칭과 같은 정수 값 ,'std :: string :: size_type'과 같습니다. 참조 된 페이지가 지원되는 타입 지정자 중 하나 인'size_t '을 언급한다는 점을 감안하면 훨씬 더 혼란 스럽다. –
은 참조 : http://www.cplusplus.com/reference/clibrary/cstdio/printf/
.*
정밀도는 형식 문자열에 지정하지만, 추가 정수 값 인수로 포맷해야하는 인수를 이전하지 않습니다. 문자를 추가 인수없이
- 1. %. *는 printf에서 무엇을 나타 냅니까?
- 2. 무엇을 의미합니까? 필터는 무엇을 의미합니까?
- 3. Windows 명령/s는 무엇을 의미합니까?
- 4. 0x0F는 무엇을 의미합니까? 그리고이 코드는 무엇을 의미합니까?
- 5. 무엇을 의미합니까?
- 6. = 무엇을 의미합니까?
- 7. 새로 고침 분기는 무엇을 의미합니까? 다음은 무엇을 의미합니까?
- 8. 언어가 '해석되는'것은 무엇을 의미합니까?
- 9. JSONP의 'P'는 무엇을 의미합니까?
- 10. JS $는 무엇을 의미합니까?
- 11. 이 JavaScript는 무엇을 의미합니까?
- 12. new()는 무엇을 의미합니까?
- 13. 도트와 그물은 무엇을 의미합니까?
- 14. NCSS는 무엇을 의미합니까?
- 15. 장고에서 pk__in은 무엇을 의미합니까?
- 16. "UIBackgroundTaskInvalid"는 무엇을 의미합니까?
- 17. pty와 tty는 무엇을 의미합니까?
- 18. HyperLink에서 EnableViewState는 무엇을 의미합니까?
- 19. 이 오류는 무엇을 의미합니까?
- 20. ACM은 무엇을 의미합니까?
- 21. BatchUpdateException은 무엇을 의미합니까?
- 22. "_"은 무엇을 의미합니까?
- 23. Vo는 무엇을 의미합니까?
- 24. aspectj에서 무엇을 의미합니까?
- 25. XACML 식별자는 무엇을 의미합니까?
- 26. `module.exports.instance`는 무엇을 의미합니까?
- 27. #line은 무엇을 의미합니까?
- 28. 이 crossdomain.xml은 무엇을 의미합니까?
- 29. "애니메이션"이란 무엇을 의미합니까?
- 30. 방법 굽기는 무엇을 의미합니까?
의
s
문자열, 즉 유효한'printf' 호출하지 않습니다. –