Usando "sscanf" para Dividir String com Delimitadores em C

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

[ Hits: 5.342 ]

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

Executando um Programa Externo sem Impedir o Funcionamento do Programa em Python

Avidemux QT5 no Ubuntu 20.04

Formas de Obter as Dimensões do Emulador Terminal

Preparando a VM para virtualização do Mac OSX no VirtualBox

Qmplay2 no Linux Mint 20 64bit

Leitura recomendada

Lista de IDEs para Programação em Qualquer Distro

Baixe de graça alguns livros do O'Reilly

Convertendo inteiros para ascii e ascii para inteiros em C

Efetuando cálculo de Aspect Ratio de vídeos em C/C++

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

  

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