Usando "sscanf" para Dividir String com Delimitadores em C

Publicado por Mauricio Ferrari (LinuxProativo) em 26/02/2021

[ Hits: 5.502 ]

Blog: https://www.youtube.com/@LinuxProativo

 


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.

Outras dicas deste autor

Instalando a última versão do LibreOffice no Linux Mint e Ubuntu

Extraindo Arquivos de Pacote de Tema do Windows (themepack) no Linux

ExMplayer no Linux Mint 20

Kino 1.3.4 no Slackware 14.2 x64

Convertendo Segundos em Horas Usando Bash

Leitura recomendada

Como criar bibliotecas dinâmicas em C/C++

Usando getch() no Linux, modo fácil

Compilando/Instalando o novo Cairo-Dock no Sabayon

Lista de livros C++

Usando funções do sistema em C com "system"

  

Comentários
[1] Comentário enviado por SamL em 18/03/2021 - 05:50h

Legal.


____________________________________________
https://nerdki.blogspot.com/ acessa aí vai lá, é grátis!
Capeta (demo) do meu trabalho:
https://github.com/cpusam
"com o bug fix vem a perfeição"

[2] Comentário enviado por maurixnovatrento em 18/03/2021 - 09:08h


valeu.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts