c - O que significa o especificador de formato% * s?

Translate

Em alguns códigos que devo manter, vi um especificador de formato%*s. Alguém pode me dizer o que é e por que é usado?

Um exemplo de seu uso é como:

fprintf(outFile, "\n%*s", indent, "");
This question and all comments follow the "Attribution Required."

Todas as respostas

Translate

É usado para especificar, de forma dinâmica, qual é a largura do campo:

  • A largura não é especificada na string de formato, mas como um argumento de valor inteiro adicional precedendo o argumento que deve ser formatado.

portanto, "indent" especifica quanto espaço alocar para a string que o segue na lista de parâmetros.

Então,

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

é o mesmo que

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

É uma boa maneira de colocar alguns espaços em seu arquivo, evitando um loop.

Fonte
Translate

Não use "% * s" em um buffer que não tenha terminação NULL (compactado) pensando que imprimirá apenas o campo "comprimento".

Fonte
Translate

O especificador de formato% 4s produz uma String em uma largura de campo de 4 - ou seja, printf exibe o valor com pelo menos 4 posições de caractere.

Se o valor a ser produzido forlessde 4 posições de caracteres de largura, o valor éright justifiedno campo por padrão.

Se o valor forgreaterdo que 4 posições de caracteres de largura, a largura do campoexpandspara acomodar o número apropriado de caracteres.

Para justificar o valor à esquerda, use um número inteiro negativo para especificar a largura do campo.

Referências:Java ™ How To Program (Early Objects), décima edição

Fonte
Translate

* Faz com que fprintf preencha a saída até que tenha n caracteres de largura, onde n é um valor inteiro armazenado no argumento da função a imediatamente anterior ao representado pelo tipo modificado.

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

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

A largura não é especificada na string de formato, mas como um argumento de valor inteiro adicional precedendo o argumento que deve ser formatado.

por exemplo:printf("%*s", 4, myValue);é equivalente aprintf("%4s", myValue);.

Fonte
Leave a Reply
You must be logged in to post a answer.
Sobre o autor