문제

유지 해야하는 일부 코드에서는 형식 지정자를 보았습니다. %*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 적절한 수의 문자를 수용합니다.

값을 정당화하려면 음의 정수를 사용하여 필드 너비를 지정하십시오.

참조 : Java ™ 프로그램 방법 (초기 개체), 10 판

* fprintf가 n 문자 너비가 될 때까지 출력을 패드하게합니다. 여기서 n은 수정 된 유형으로 표시되는 기능 인수에 저장된 정수 값입니다.

printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top