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; } |