sscanf para que serve e como usa-la?

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

Perfil removido
removido

(usa Nenhuma)

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

já li algo mas não entendi


  


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

Paulo
paulo1205

(usa Ubuntu)

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?

Perfil removido
removido

(usa Nenhuma)

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?

felipe silva
lipman

(usa Debian)

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?

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

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.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts