quinta-feira, 19 de janeiro de 2017

Função sprintf em C - Modo gráfico

Algumas vêzes precisamos escrever dados formatados numa string,
mesmo sendo a origem de tipos diferentes do buffer.
O  buffer deve ter tamanho suficiente para conter toda a seqüência resultante
 (seria muito bom que o aprendiz de C já visse rapidamente sobre a função snprintf ();
que com certeza fornece uma versão mais completa).
Um caractere nulo é anexado automaticamente após o conteúdo,
e isto é perfeito e gera despreocupação.
sprintf é bem semelhante a printf. Porém, ao invés de escrever na saída padrão,
escreve em uma string.
A síntaxe de sprintf(); está abaixo:
int sprintf (char *destino, char *controle, ...);
Como estamos usando uma tela gráfica, tornou-se extremamente útil usar sprintf();
Mesmo porque, scanf e printf não funcionam corretamente em modo gráfico,
como estamos tão acostumados em modo texto na tela do Dos.
Só quero alertar sobre a necessidade de se saber que sprintf não escreve
nada numa tela gráfica, o que realmente ela faz, é preencher uma variável
string que será imprimida através da função outtextxy.
Aqui está um ótimo exemplo de como usar esta fantástica função do C,
que se torna muito mais útil ainda quando estamos em modo gráfico.

Veja abaixo uma imagem do programa em execução:




#include <stdio.h>
#include <graphics.h>
#define tam 10
void imp_jan ( int x, int y, int lin, int col, int n ) {
     for ( int i = 0; i <= n; i++ ) {
         line ( x + i, y, x + i, y + lin );
         line ( x + col + i, y, x + col + i, y + lin );
         line ( x, y + i, x + col, y + i );
         line ( x, y + i + lin, x + col + n, y + i + lin );
     }
}
int main ( ) {
     char buf [ 50 ];
     int i_ = 1, i;
     initwindow ( 780, 363, "FUNÇÃO SPRINTF EM C" );
     setcolor ( 8 );
     imp_jan ( 1, 96 * i_ - 97, 345, 760, 20 );
     settextstyle ( TRIPLEX_FONT, HORIZ_DIR, 2 );
     setcolor ( 12 );
     outtextxy ( 220, 40, "FUNÇÃO SPRINTF EM C" );
     setcolor ( 15 );
     outtextxy ( 180, 80, "Abaixo as temperaturas dos oitos" );
     outtextxy ( 180, 100, "primeiros dias de julho de 2016" );
     float Temp [ 8 ] = { 8.9, 9.5, 8.0, 11.8, 12.7, 7.6, 10.3, 15.4 };
     setcolor ( 9 );
     moveto ( 120, 140 );
     for ( i = 0; i < 8; i++ ) {
         sprintf ( buf, " %.1f ", Temp [ i ] );
         outtext ( buf );
     }
     settextstyle ( TRIPLEX_FONT, HORIZ_DIR, 2 );
     setcolor ( 12 );
     outtextxy ( 260, 260, "Por: " );
     setcolor ( 13 );
     outtextxy ( 340, 260, "Samuel Lima" );
     setcolor ( 12 );
     outtextxy ( 260, 300, "MUITO OBRIGADO" );
     getch ( );
     closegraph ( );
     return 0;
}



Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.