Usando strtok em C: A Guide to Parsing Strings

Parsing strings is a common task in programming, and the C programming language provides the strtok function to help with this task. A função strtok é usada para dividir uma string em substrings menores com base em um caractere delimitador. Neste artigo, vamos explorar como usar strtok em C, bem como responder a algumas perguntas relacionadas.

Primeiro, vamos dar uma olhada na sintaxe do strtok:

“`

char *strtok(char *str, const char *delim);

“`

A função strtok recebe dois argumentos: a string a ser analisada (str) e o(s) caractere(s) delimitador(es) (delim). A função retorna um ponteiro para o próximo token na string, ou NULL se nenhum outro token for encontrado.

Para usar strtok, primeiro precisamos inicializá-la passando a string a ser analisada como o primeiro argumento e NULL como o segundo argumento:

““

char str[] = “Hello,World!”;

char *token = strtok(str, “,”);

“`

Neste exemplo, estamos analisando a string “Hello,World!” usando o caractere delimitador ‘,’. A função strtok retornará um ponteiro para o primeiro token na string, que neste caso é “Hello”. Podemos então usar strtok novamente para obter o próximo token:

“`

token = strtok(NULL, “,”);

“`

Isso retornará um ponteiro para o segundo token na string, que é “World!”.

Agora, vamos passar para as questões relacionadas. Para ler quebras de linha em C, podemos usar a função fgets em vez da função padrão scanf. fgets lê a entrada linha por linha, incluindo quaisquer quebras de linha. Aqui está um exemplo:

“`

char buffer[1024];

fgets(buffer, 1024, stdin);

“`

Isto irá ler uma linha de entrada do stdin (que pode ser o usuário digitando no terminal ou a entrada de um arquivo) e armazená-la no array buffer.

Para pular uma linha no printf, podemos usar a sequência de escape ‘n’. Isto iniciará uma nova linha:

“`

printf(“Esta é a primeira linha.nEsta é a segunda linha.”);

“`

Isto irá produzir:

“`

Esta é a primeira linha.

Esta é a segunda linha.

“`

Quando escrevemos texto e precisamos pular uma linha, podemos usar a mesma sequência de escape ‘n’ do printf.

Para ler uma linha de um arquivo em C, podemos usar a função fgets novamente. Apenas precisamos de especificar o fluxo do ficheiro como entrada em vez de stdin:

““

char buffer[1024];

FILE *fp = fopen(“meuarquivo.txt”, “r”);

fgets(buffer, 1024, fp);

fclose(fp);

“`

Isto irá ler a primeira linha do arquivo “meuarquivo.txt” e armazená-la no array do buffer.

Finalmente, vamos tocar brevemente em como fazer quebras de linha em Java. Em Java, podemos usar a sequência de escape ‘n’ assim como em C:

““

System.out.println(“Esta é a primeira linha.nEsta é a segunda linha.”);

“`

Isto irá produzir:

“`

Esta é a primeira linha.

Esta é a segunda linha.

“`

Em conclusão, strtok é uma função útil em C para analisar strings com base em um caractere delimitador. Para ler quebras de linha, podemos usar a função fgets. Para saltar uma linha em printf ou ao escrever texto, podemos usar a sequência de escape ‘n’. Para ler uma linha de um ficheiro, podemos utilizar fgets com um fluxo de ficheiro como entrada. E em Java, também podemos usar ‘n’ para fazer quebras de linha.

FAQ
Além disso, como separar palavras numa frase em C?

Para separar palavras numa frase em C, podes utilizar a função strtok(). Esta função quebra uma string numa sequência de tokens (palavras) com base num delimitador especificado. A sintaxe básica da função strtok() é:

“`

char *strtok(char *str, const char *delim);

“`

Aqui, `str` é a string a ser analisada, e `delim` é o(s) caractere(s) delimitador(es) que separa(m) as palavras na string. A função strtok() retorna um ponteiro para o primeiro token na string, e cada chamada subsequente a strtok() com um ponteiro NULL como seu primeiro argumento retorna o próximo token na string.

Aqui está um exemplo de código que demonstra como usar strtok() para separar palavras em uma sentença:

“`

#include

#include

int main() {

char sentence[] = “This is a sample sentence.”;

char *token = strtok(sentence, ” “);

while (token != NULL) {

printf(“%sn”, token);

token = strtok(NULL, ” “);

}

return 0;

}

“`

Neste código, a sentença “This is a sample sentence.” é analisada usando strtok() com um espaço (” “) como delimitador. O laço while imprime cada token (palavra) na sentença em uma linha separada. A saída deste programa seria:

“`

Esta

é

uma

amostra

de sentença.

“`

As pessoas também perguntam como separar os caracteres numa string?

Para separar os caracteres de uma cadeia de caracteres em C, pode utilizar a função strtok, que divide uma cadeia de caracteres numa sequência de tokens com base num delimitador especificado. Fornece a cadeia de caracteres a ser analisada como primeiro argumento e o(s) carácter(es) delimitador(es) como segundo argumento. A função retorna um ponteiro para o primeiro token encontrado na string, e chamadas subsequentes com um ponteiro NULL como primeiro argumento retornarão o próximo token na sequência.