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:
(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.