Ir ao conteúdo

Posts recomendados

Postado

Boa noite, amigos do Fórum. De antemão, gostaria de agradecer todo o suporte que vocês tem me dado durante meu aprendizado na linguagem C.

 

Estou conforme vou avançando nos assuntos, acompanhando pelos livros indicados, e resolvendo alguns exercícios para fixação. E agora me surgiu um, sobre a utilização de alguns detalhes da função printf.

Estou usando o recurso de largura mínima de impressão do campo, para questões estéticas no momento de impressão, como se fosse uma tabulação, para alinhar a impressão.

Porém, ao utilizar um carácter com acento, esta é a única linha que sai do padrão. Isso implica alguma explicação da forma que a linguagem interpreta esses caracteres especiais?

#include <stdio.h>


int main(){



	//Declarando as variáveis do programa
	int item, codigo;
	char produto[16];
	float preco;

	/*
	Imprimindo as tabelas com item, produto, código e preço
	com formatação de largura mínima de campo para tabulação
	*/
	printf("%6s %-16s %-10s %-6s\n", "ITEM", "PRODUTO", "CÓDIGO", "PREÇO");
	printf("%6s %-16s %-10s %-6s\n", "1", "Cachorro-quente", "100", "5,00");
	printf("%6s %-16s %-10s %-6s\n", "2", "X-salada", "101", "8,79");
	printf("%6s %-16s %-10s %-6s\n", "3", "X-bacon", "102", "9,99");
	printf("%6s %-16s %-10s %-6s\n", "4", "Misto", "103", "6,89");
	printf("%6s %-16s %-10s %-6s\n", "5", "Salada", "104", "4,80");
	printf("%6s %-16s %-10s %-6s\n", "6", "Água", "105", "3,49");
	printf("%6s %-16s %-10s %-6s\n", "7", "Refrigerante", "106", "4,99");

	return 0;
}

Como os colegas podem ver na imagem em anexo, a única linha que sai do alinhamento da impressão é a linha que contém o carácter especial de acento da palavra "Água".

 

Alguém poderia me ajudar? Eu poderia incluir um espaçamento no comando de impressão, mas gostaria de entender o porquê isso aconteceu somente nesta linha.

Captura de tela de 2020-10-25 19-31-58.png

  • Obrigado 1
Postado

@devair1010 obrigado pela atenção, meu amigo. Vou testar em outro IDE. Estou usando o Eclipse no Linux.

 

E antes de rodar em outro IDE, irei testar pelo terminal, bem lembrado.

 

Obrigado!

@devair1010 creio que seja no sistema Linux.

A execução pelo terminal também apresenta o mesmo problema.

Captura de tela de 2020-10-25 22-07-06.png

  • Curtir 1
Postado

@KXSY obrigado pelas dicas, meu amigo. Já salvei aqui pra ler com calma depois. Mas a minha dúvida é outra. Eu utilizei a formatação de limite de campos para a impressão do printf.

Porém, o mesmo código manteve o alinhamento no sistema Windows, como mostrou nosso amigo @devair1010.

 

Já no Linux, a impressão que envolvia a palavra "Água", não manteve o alinhamento, como nas demais linhas. Sobre a impressão correta dos caracteres, eu entendi como faz.

 

A minha dúvida é se o carácter especial, por exemplo aqueles que levam acento, são ocupados de maneira diferente na string.

E acabei de ver aqui pelo debug do Eclipse que o que eu suspeitava é isso mesmo. A palavra "Água" ocupa 5 espaços.

 

Mas de qualquer forma, este artigo da USP me será muito útil. Obrigado pela atenção. O outro assunto que você me encaminhou acho que ainda é muito avançado. Obrigado mesmo assim!

 

  • Amei 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...