Como dividir strings com strtok () na programação C?

Como Dividir Strings Com Strtok Na Programacao C



Separando strings é importante por vários motivos, como processamento de texto, análise ou análise de dados, e a linguagem de programação C oferece várias maneiras de lidar com essa tarefa. No entanto, a função C mais popular que permite corda de divisão em vários tokens por um delimitador especificado é strtok() . Sendo uma função de biblioteca, está disponível na biblioteca C padrão que suporta operações de string.

Como funciona a função strtok()?

Para dividir uma string usando strtok() , você primeiro precisa entender como ele funciona. O strtok() lê a string de entrada caractere por caractere até encontrar um delimitador. Uma vez que um delimitador é encontrado, strtok() substitui-o por um caractere nulo '\0', dividindo efetivamente a string original em duas partes. Um ponteiro para o primeiro caractere da string é retornado pela função. O strtok() a sintaxe da função é:

strtok ( Caracteres * str , const Caracteres * eu compartilho ) ;

O strtok() A função recebe dois argumentos - um ponteiro para o primeiro token no conjunto de tokens e uma string que contém os caracteres delimitadores. Ele retorna um ponteiro para o próximo token, que começa imediatamente após o delimitador que dividiu o último token. Ele retorna NULL se não houver mais tokens.







Como dividir strings com Strtok () na programação C?

Aqui está um exemplo de como usar strtok() para dividir uma string:



#include

#include

int principal ( ) {

Caracteres entrada [ ] = 'Linux, Dica' ;

Caracteres * símbolo ;

símbolo = strtok ( entrada , ',' ) ;

enquanto ( símbolo != NULO ) {

printf ( '%s \n ' , símbolo ) ;

símbolo = strtok ( NULO , ',' ) ;

}

retornar 0 ;

}

No exemplo acima, primeiro declaramos um ponteiro para um char. Nós então usamos strtok() para dividir a string de entrada em tokens. A primeira chamada de strtok() recebe dois argumentos: a string de entrada e a string delimitadora “,”. O primeiro token, “Linux”, é aquele que strtok() retorna como um ponteiro para . Em seguida, usamos um loop while para percorrer a string de entrada, usando strtok() com um ponteiro NULL para continuar dividindo os tokens restantes. A string delimitadora é passada novamente como um argumento para strtok() para indicar os caracteres delimitadores.



Saída





Limitações da Função Strtok()

1: Modifica a String Original

O strtok() a função não retorna uma cópia da string; em vez disso, ele modifica a string original. Portanto, se você precisar ter uma versão não modificada da string após dividi-la, faça uma cópia da string original antes de invocar strtok() .



2: Assíncrono

Uma limitação significativa de strtok() é que ele só pode ser usado em uma única string por vez. Em outras palavras, você não pode usá-lo para tokenizar várias strings simultaneamente.

3: Capacidade Limitada

Outra limitação potencial é que strtok() tem uma capacidade limitada para lidar com delimitadores repetidos. Por exemplo, se sua string tiver espaços consecutivos entre as palavras, strtok() o trata como um único delimitador. Para lidar com esses casos, você terá que usar uma abordagem diferente.

Conclusão

O strtok() function é uma função muito útil para dividir strings na programação C. Ele pega uma string de entrada e uma string delimitadora e retorna um ponteiro para o primeiro token encontrado na string de entrada. strtok() é destrutivo, portanto, se você precisar preservar a integridade da string original, é recomendável criar uma duplicata dela. Agora que você sabe como fazer isso, pode cortar qualquer barbante em pedaços menores para processamento.