printf() e scanf()
Esta semana aprendi dois truquezinhos (se é que posso chamar assim) que me deixaram um pouco impressionado por nunca ter ouvido falar neles, embora estejam devidamente documentado nas páginas de manual de suas respectivas funções (printf() e scanf()).
O truque de scanf() permite ler strings com espaços. Por exemplo, se você fizer:
scanf("%s", line);
E digitar “foo bar”, scanf() vai ler apenas “foo” em line. Mas se você fizer:
scanf("%[^\n]s", line);
Aí sim, scanf() vai ler “foo bar” em line. Não sei se tem jeito mais fácil e estou com preguiça de ler toda documentação (ah, não esqueça que a maneira recomendada de ler strings é com fgets()).
O que me impressionou mais, no entanto, foi o truque de printf(): você pode passar a quantidade de caracteres a ser impresso por paramêtro, por exemplo:
printf("%.*s\n", 2, line);
Vai imprimir apenas os dois primeiros caracters de line, pois %.*s significa “pegue a quantidade de caracteres a ser impresso no próximo parâmetro”, que neste exemplo é 2.
Resta confirmar se tudo isso faz parte do padrão, mas pelo que diz a documentação creio que faz.
August 27th, 2007 at 12:08
Oi Capitulino!
Eu não sei se você conhecer o site do codare (codare.net). Acho que seria legal postar estas dicas por lá. O que achas?
[]’s
August 27th, 2007 at 12:44
Opa,
Já ouvi falar. Não sei como eles trabalham, mas sinta-se livre para sugerir a inclusão do meu blog no feed.