É muito comum uma saída com percentual, e com o símbolo '%' depois do número, mas a printf() usa este caractere para formatação de saída. Qual é a solução?
Já vi muitas vezes sendo resolvido assim:
printf( "%f %s\n",pecent,"%" );
Isto está errado, realmente muito errado. Mas por que está errado, e qual é a solução?
O último parâmetro desta printf() é uma string com o caractere '%' e um nulo ao final (Toda string em C termina com um nulo.). Esta string fica alocada em algum lugar na área de dados do programa, e o endereço deste local é passado como parâmetro para a printf().
Notou que isto usa espaço na área de dados, e ainda empilha o endereço deste espaço como parâmetro da printf().
Tem uma solução menos ruim. No lugar da string pode-se colocar o caractere:
printf( "%f %c\n",percent,'%' );
O terceiro parâmetro não será mais o endereço de uma string, e sim, o caractere, e não existira uma string referente a isto na área de dados do programa.
Já melhorou, mas não é a solução correta. Eis a solução correta:
printf( "%f %%\n",percent );
Neste caso nem tem o terceiro parâmetro.
Sim, quando a printf() acha um '%' seguindo um '%' ela coloca um '%'. É a solução de longe mais simples, e a correta, para o caso.
Eu já tenho um blog principalmente de fotografia, mas aqui pretendo falar de computação, dando dicas, truques etc. O nome veio do fictício Necronomicon, que pelo que eu li, seria um livro praticamente perdido, com poucos exemplares sobreviventes, e ainda por cima proibido, ensinando uma arte perdida, muito pouco conhecida, chegando a ser muito perigosa. É neste sentido que uso como origem do nome deste blog. Para maiores detalhes, leia o artigo mais antigo publicado.
quarta-feira, 22 de agosto de 2018
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário