sexta-feira, 20 de janeiro de 2017

Função sscanf - Modo gráfico

A função sscanf permite ler dados formatados de uma cadeia de caracteres,
(string), seu funcionamento não é muito diferente das funções scanf
que faz leitura do teclado e fscanf que faz sua leitura de um arquivo,
a diferença mesmo é que ela ler os valores que foram armazenados numa string.
Fica fácil saber se a operação foi bem sucedida, basta observar
que o total de itens que foram passados foram preenchidos totalmente.
Más se a contagem for menor, ou se zero for retornado, houve falha
na operação, sendo que se houver falha na entrada, antes mesmo que qualquer byte
possa ser lido EOF é retornado.
Abaixo está a síntaxe de sscanf:
int sscanf (char* s, char* formato, ...);
Neste exemplo, criei duas matrizes de char com duas dimensões cada,
que poderia ser simples em uma dimensão, e armazenei estes valores
usando sscanf em dois vetores vazios antes declarados que são respectivamente
int N1, e float N2.
E para a impressão no vídeo, declarei dois vetores de char, buf e buf_1
para receberem os dados de N1 e N2, através da função sprintf onde serão imprimidos
 pela função outtext, já que estamos num modo gráfico.

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


 Veja abaixo o código do programa:


#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 ];
     char buf_1 [ 50 ];
     int i_ = 1, i;
     initwindow ( 780, 363, "FUNÇÃO SSCANF EM C" );
     setfillstyle ( 9, 15 );
     floodfill ( 0, 0, 15 );
     setcolor ( 8 );
     imp_jan ( 1, 96 * i_ - 97, 345, 760, 20 );
     settextstyle ( TRIPLEX_FONT, HORIZ_DIR, 2 );
     setcolor ( 12 );
     outtextxy ( 220, 40, "FUNÇÃO SSCANF EM C" );
     setcolor ( 9 );
     outtextxy ( 180, 80, "Os 10 primeiros números naturais" );
     char Num [ 11 ] [ 2 ] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
     char Temp [ 9 ] [ 5 ] = { "8.9", "9.5", "8.0", "11.8", "12.7", "7.6",
              "10.3", "15.4" };
     int N1 [ 10 ];
     float N2 [ 8 ];
     setcolor ( 15 );
     moveto ( 180, 110 );
     for ( i = 0; i < 10; i++ ) {
         sscanf ( Num [ i ], " %d ", &N1 [ i ] );
         sprintf ( buf, " %d ", N1 [ i ] );
         outtext ( buf );
     }
     setcolor ( 9 );
     outtextxy ( 180, 140, "Abaixo as temperaturas dos oitos" );
     outtextxy ( 180, 160, "primeiros dias de julho de 2016" );
     setcolor ( 15 );
     moveto ( 120, 200 );
     for ( i = 0; i < 8; i++ ) {
         sscanf ( Temp [ i ], "%f", &N2 [ i ] );
         sprintf ( buf_1, " %.1f ", N2 [ i ] );
         outtext ( buf_1 );
     }
     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.