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

Foi útil?

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);

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top