Pular para o conteúdo

Usando "sscanf" para Dividir String com Delimitadores em C

Dica publicada em C/C++ / Miscelânea
Mauricio Ferrari (LinuxProativo) maurixnovatrento
Hits: 5.528 Categoria: C/C++ Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Usando "sscanf" para Dividir String com Delimitadores em C

Você está programando em C e precisa de um método simples para separar strings em strings menores ou qualquer outra variável. Além de dividir a string, você quer os resultados gravados em outras variáveis, seja int, char, entre outros. Talvez, você se interesse pelo sscanf.

Seu uso é muito simples. Veja o exemplo a seguir:

#include <stdio.h>
#include <stdlib.h>

int main() {
    char *teste = (char *)malloc(sizeof(char));
    teste = "10/20/30";

    int a, b, c;
    sscanf(teste, "%d/%d/%d", &a, &b, &c);
    printf("
Resultado:
%d %d %d 
", a, b, c);

    teste = "pera,uva,figo";
    char *str1 = (char *)malloc(sizeof(char));
    char *str2 = (char *)malloc(sizeof(char));
    char *str3 = (char *)malloc(sizeof(char));

    sscanf(teste, "%[^,],%[^,],%[^,]", str1, str2, str3);
    printf("
Resultado:
%s %s %s 
", str1, str2, str3);
    return 0;
}

Note que eu exemplifiquei usando alocação dinâmica, não é obrigatório. Você pode declarar a variável char normalmente como você preferir. O que nos interessa é como a função sscanf foi usada. No primeiro exemplo, note que foi possível usar a barra como delimitador e usar os números para gravá-los em variáveis int, bem prático.

No segundo exemplo, o negócio muda um pouco de figura, no lugar de "%s" foi usado "%[^,]", ou seja, pegue o valor entre o começo da delimitação e a vírgula. Usando o "%s", as vírgulas serão recolhidas e gravadas nas novas variáveis também, o que não é interessante nesse caso. Note também que não foi necessário usar "&" para fazer a divisão para outras strings.

Fica a dica.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Instalando o FrostWire no Deepin 20

Expandindo o Til pelo Diretório Inicial do Usuário em Python

Comando CUT usando delimitador TAB

Resolvendo problemas de instabilidade no WIFI no Ubuntu e Linux Mint

Instalando Última Versão do LibreOffice no Deepin 20

FL-Av - Interface gráfica para ClamAV

MDK (Mix Development Kit) no Projeto GNU

Convertendo inteiros para ascii e ascii para inteiros em C

Lista de livros C++

Split de String em C++

Contribuir com comentário

Entre na sua conta para comentar.