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.
“`
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.
““
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, “,”);
“`
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);
“`
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.”);
“`
“`
Esta é a primeira linha.
Esta é a segunda linha.
“`
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);
“`
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.”);
“`
“`
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.
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.
“`
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.