printf esquerda-pad com espaços
-
08-07-2019 - |
Pergunta
Como posso pad uma string com espaços à esquerda quando usando printf?
Por exemplo, eu quero imprimir "Olá" com 40 espaços precedente.
Além disso, a seqüência Quero imprimir consiste em várias linhas. Eu preciso imprimir cada linha separadamente?
EDIT:. Só para ficar claro, eu quero exatamente 40 lugares impressa antes de cada linha
Solução
Se você quer que a palavra "Olá" para imprimir em uma coluna que é 40 caracteres de largura, com espaços de preenchimento à esquerda, use o seguinte.
char *ptr = "Hello";
printf("%40s\n", ptr);
Isso lhe dará 35 espaços, em seguida, a palavra "Olá". Isto é como você formatar coisas quando você sabe o quão grande você deseja que a coluna, mas as alterações de dados (bem, é um maneira que você pode fazê-lo).
Se você sabe que quer exatamente 40 espaços, em seguida, algum texto, basta salvar os 40 espaços em um constante e imprimi-los. Se você precisa imprimir várias linhas, use várias instruções printf
como o descrito acima, ou fazê-lo em um loop, alterando o valor do ptr
cada vez.
Outras dicas
Eu uso essa função para recuar a minha saída (por exemplo, para imprimir uma estrutura de árvore). O indent
é o número de espaços antes do string.
void print_with_indent(int indent, char * string)
{
printf("%*s%s", indent, "", string);
}
int space = 40;
printf("%*s", space, "Hello");
Esta declaração vai reservar uma fileira de 40 caracteres, imprimir corda no final da linha (remoção de espaços extras para que o comprimento total da linha é constante a 40). Mesmo pode ser usado para caracteres e inteiros da seguinte forma:
printf("%*d", space, 10);
printf("%*c", space, 'x');
Este método usa um parâmetro para determinar espaços é útil quando é necessário um número variável de espaços. Estas declarações ainda vai trabalhar com literais inteiro da seguinte forma:
printf("%*d", 10, 10);
printf("%*c", 20, 'x');
printf("%*s", 30, "Hello");
Espero que isso ajude alguém como eu no futuro.
Se você quer exatamente 40 lugares antes da string, então você deve apenas fazer:
printf(" %s\n", myStr );
Se isso é muito sujo, você pode fazer (mas será mais lento do que digitar manualmente os 40 espaços):
printf("%40s%s", "", myStr );
Se você quiser a string a ser alinhados na coluna 40 (isto é, ter até 39 espaços de prosseguir, de forma que o direito mais personagem é na coluna 40), em seguida, faça o seguinte:
printf("%40s", myStr);
Você também pode colocar "até" 40 espaços após a corda fazendo:
printf("%-40s", myStr);