programing

%*의 형식 지정자는 무엇을 의미합니까?

shortcode 2022. 7. 11. 22:27
반응형

%*의 형식 지정자는 무엇을 의미합니까?

유지해야 하는 일부 코드에서 형식 지정자가 발견되었습니다.%*s이게 뭔지, 왜 사용되는지 누가 말해줄래?

사용 예시는 다음과 같습니다.

fprintf(outFile, "\n%*s", indent, "");

필드의 너비를 동적으로 지정하는 사용됩니다.

  • 너비는 형식 문자열로 지정되지 않고 형식화해야 하는 인수 앞에 추가 정수 값 인수로 지정됩니다.

따라서 "parameter"는 파라미터 목록에서 뒤에 오는 문자열에 할당하는 공간의 양을 지정합니다.

그렇게,

printf("%*s", 5, "");

와 같다

printf("%5s", "");

파일에 공간을 몇 개 넣어 루프를 회피할 수 있습니다.

printf 및 fprintf에서 사용하는 경우:

printf("%*s", 4, myValue); is equivalent to printf("%4s", myValue);

변수는 최소 너비와 나머지 오른쪽 맞춤 공간으로 표시됩니다.값을 왼쪽으로 맞추려면 음의 정수를 사용합니다.

scanf 및 sscanf에서 사용되는 경우:

/* sscanf example */
#include <stdio.h>

int main ()
{
  char sentence []="Rudolph is 12 years old";
  char str [20];
  int i;

  sscanf (sentence,"%s %*s %d",str,&i);
  printf ("%s -> %d\n",str,i);
  
  return 0;
}

출력:

Rudolph -> 12

문자열을 무시하기 위해 사용됩니다.

형식 지정자 %4s은 필드 너비 4의 문자열을 출력합니다.즉, printf는 최소 4개의 문자 위치를 가진 값을 표시합니다.

출력되는 값이less4글자 위치 너비보다 큰 값right justified기본적으로 필드에 있습니다.

값이 다음과 같은 경우greater4글자 이상의 너비, 필드 너비expands적절한 수의 문자를 사용할 수 있습니다.

값을 왼쪽으로 맞추려면 음의 정수를 사용하여 필드 폭을 지정합니다.

참고 자료: Java™ How To Program (얼리 오브젝트), 제10판

NULL 종료(패킹)되지 않은 버퍼에서는 "길이" 필드만 인쇄한다고 생각하여 "%*s"를 사용하지 마십시오.

* fprintf가 n글자의 너비가 될 때까지 출력을 패딩합니다.여기서 n은 수정된 유형으로 나타나는 함수 인수 바로 앞에 저장된 정수 값입니다.

printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

너비는 형식 문자열로 지정되지 않고 형식화해야 하는 인수 앞에 추가 정수 값 인수로 지정됩니다.

예:printf("%*s", 4, myValue);와 동등하다printf("%4s", myValue);.

언급URL : https://stackoverflow.com/questions/1000556/what-does-the-s-format-specifier-mean

반응형