As funções sprintf e sscanf


O objetivo deste post é estudar essas duas funções que operam sobre strings, ambas as funções estão na biblioteca padrão stdio.h.

Todo programador em C deve saber pra que serve e como utilizar as funções printf e scanf. Pois bem, sprintf e sscanf funcionam praticamente da mesma forma, só que em vez de operarem sobre os streams de entrada e saída padrão (stdin e stdout, respectivamente) operam sobre strings (por isso o s na frente do nome).

Definições:

int sprintf(char *string, char *formato, lista de argumentos);
int sscanf(char *string, char *formato, lista de argumentos);

Ambas as funções operam sobre o parâmetro char *string. Assim como printf escreve na tela, sprintf escreve na string. Assim como scanf lê informações do teclado, sscanf lê informações da string.

A função sscanf retorna quantos parâmetros foram lidos com sucesso da string. Uma boa prática de programação é verificar se este número é o esperado.

A função sprintf retorna o tamanho (sem contar com o ‘/0′) da nova string. Repare que fica a cargo do programador verificar se a nova string cabe no espaço alocado para ela.

Veja um exemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int main(void)
{
    char s[] = "31/05/1989";
 
    int dia, mes, ano;
 
    sscanf(s,"%d/%d/%d",&dia,&mes,&ano); /* Tenta ler três inteiros da string e armazenar nas variáveis */
 
    printf("%d %d %d\n",dia,mes,ano);
 
    dia = 4;
    mes = 5;
    ano = 2010;
 
    sprintf(s,"%d/%d/%d",dia,mes,ano); /* Escreve uma nova string em s */
 
    printf("%s",s);
 
    return 0;
}

Leave a Reply