Pular para o conteúdo

sscanf para que serve e como usa-la?

Responder tópico
  • Denunciar
  • Indicar

1. sscanf para que serve e como usa-la?

Enviado em 01/11/2016 - 15:03h

já li algo mas não entendi

Responder tópico

2. Re: sscanf para que serve e como usa-la?

Enviado em 01/11/2016 - 15:22h

Serve para a mesma coisa que scanf(), mas usando uma string como fonte de dados, em vez de um stream.

Uma dica: o nome “scanf” é uma redução de “scan formatted text”, que significa “examine texto formatado”. Ou seja: o propósito é verificar se um bloco de texto está conforme um padrão esperado, eventualmente extraindo partes desse texto para formar valores de outros tipos de dados.

3. Re: sscanf para que serve e como usa-la?

Enviado em 01/11/2016 - 18:51h

paulo1205 escreveu:

Serve para a mesma coisa que scanf(), mas usando uma string como fonte de dados, em vez de um stream.

Uma dica: o nome “scanf” é uma redução de “scan formatted text”, que significa “examine texto formatado”. Ou seja: o propósito é verificar se um bloco de texto está conforme um padrão esperado, eventualmente extraindo partes desse texto para formar valores de outros tipos de dados.
mas para que serve exclusivamente o sscanf?

4. Re: sscanf para que serve e como usa-la?

Enviado em 01/11/2016 - 19:13h

dausterbarbosaaa escreveu:

paulo1205 escreveu:

Serve para a mesma coisa que scanf(), mas usando uma string como fonte de dados, em vez de um stream.

Uma dica: o nome “scanf” é uma redução de “scan formatted text”, que significa “examine texto formatado”. Ou seja: o propósito é verificar se um bloco de texto está conforme um padrão esperado, eventualmente extraindo partes desse texto para formar valores de outros tipos de dados.
mas para que serve exclusivamente o sscanf?


sugiro que leia com mais atenção a resposta do amigo ai de cima, pois a resposta dele responde sua duvida!

5. Re: sscanf para que serve e como usa-la?

Enviado em 01/11/2016 - 23:00h

dausterbarbosaaa escreveu:

mas para que serve exclusivamente o sscanf?
Olá, boa noite.

A resposta do paulo1205 é excelente e esclarece tudo o que há para ser esclarecido.
O que posso oferecer além, a título de exemplo, é a assinatura da função, um código simples e um (simples) caso de uso.

API ( https://linux.die.net/man/3/sscanf ):


#include <stdio.h>

int sscanf(const char *str, const char *format, ...);
Assinatura simples. str é um ponteiro para char (uma string). format é uma string de formato, obedecendo a mesma sintaxe de scanf(). ... (três pontos) é a forma de dizer que a função toma argumentos variáveis (tenho um artigo aqui no VoL sobre funções variádicas, se interessar).

Código de exemplo:


#include <stdio.h>

int main(void)
{
int a, b, c;
char d, e;

char *str = "1 2 3 x y";

sscanf(str, "%d %d %d %c %c", &a, &b, &c, &d, &e);

printf("a: %d\n", a);
printf("b: %d\n", b);
printf("c: %d\n", c);
printf("d: %c\n", d);
printf("e: %c\n", e);


return 0;
}
Saída do programa:

$ ./sscanf
a: 1
b: 2
c: 3
d: x
e: y
Casos de uso:

Pois bem. A família de funções scanf é uma das mais complexas da libc. Infelizmente, elas não são recomendadas para uso direto com strings de entrada de usuários. Usuários não seguem padrões, e essas funções são essencialmente dependentes de padrões. Qualquer desvio e seu programa será interrompido.

Essas funções normalmente não são usadas em produção. Quando são, são usadas em casos específicos onde uma entrada padronizada é garantida. Por exemplo, suponha que seu programa leia um arquivo de configuração quando inicia. Suponhamos também que os administradores que o usarão irão ler o manual. Portanto, você terá uma entrada bem padronizada, e poderá mapear o arquivo com mmap e então usar sscanf para ler todas as variáveis.

Alguns programadores usam como reconhecimento condicional em strings construídas dinamicamente (o que não recomendo, variáveis de estado são melhores...).

Infelizmente, se você não esclarecer melhor o que quer saber sobre a sscanf não dá pra falar muita coisa. O que vai te esclarecer muita coisa é o manual:


man sscanf
Espero ter ajudado,
Enzo Ferber
[]'s



$ indent -kr -i8 src.c

"(...)all right-thinking people know that (a) K&R are _right_ and (b) K&R are right."
- linux/Documentation/CodingStyle - TORVALDS, Linus.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder