%*s 형식 지정자는 무엇을 의미합니까?
-
05-07-2019 - |
문제
유지 해야하는 일부 코드에서는 형식 지정자를 보았습니다. %*s
. 아무도 이것이 무엇인지, 왜 그것이 사용되는지 말해 줄 수 있습니까?
사용의 예는 다음과 같습니다.
fprintf(outFile, "\n%*s", indent, "");
해결책
역동적 인 방식으로 필드의 너비를 지정하는 데 사용됩니다.:
- 너비는 형식 문자열에 지정되지 않고 형식화되어야하는 인수 이전의 추가 정수 값 인수로 지정됩니다.
따라서 "Indent"는 매개 변수 목록에서 다음을 따르는 문자열을 할당 할 공간을 지정합니다.
그래서,
printf("%*s", 5, "");
와 같다
printf("%5s", "");
루프를 피하고 파일에 공간을 넣는 좋은 방법입니다.
다른 팁
"길이"필드 만 인쇄 할 것이라고 생각하는 널 종료되지 않은 (포장) 버퍼에 "%*s"를 사용하지 마십시오.
http://www.cplusplus.com/reference/clibrary/cstdio/printf/
너비는 형식 문자열에 지정되지 않고 형식화되어야하는 인수 이전의 추가 정수 값 인수로 지정됩니다.
예 : printf("%*s", 4, myValue);
동등합니다 printf("%4s", myValue);
.
형식 지정자 %4S는 4의 필드 너비의 문자열을 출력합니다.
출력 값이있는 경우 less
4 자 미만의 위치는 넓고 값은입니다 right justified
기본적으로 필드에서.
가치가 있다면 greater
4 자 미만의 위치는 필드 너비입니다 expands
적절한 수의 문자를 수용합니다.
값을 정당화하려면 음의 정수를 사용하여 필드 너비를 지정하십시오.
* fprintf가 n 문자 너비가 될 때까지 출력을 패드하게합니다. 여기서 n은 수정 된 유형으로 표시되는 기능 인수에 저장된 정수 값입니다.
printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.