Partir con strtok en C
strtok corta una cadena en tokens en el lugar, es decir, modifica la entrada.
#include <stdio.h>
#include <string.h>
int split_fields(char *line, const char *delims, char **out, int max) {
int count = 0;
char *token = strtok(line, delims);
while (token != NULL && count < max) {
out[count++] = token;
token = strtok(NULL, delims);
}
return count;
}
void demo(void) {
char line[] = "rust,104,97.5";
char *fields[4];
int n = split_fields(line, ",", fields, 4);
for (int i = 0; i < n; i++) {
printf("[%s]", fields[i]);
}
printf("\n");
}
Cómo funciona
- Escribe NUL sobre cada delimitador, así que el búfer debe ser escribible.
- La primera llamada recibe la cadena; las siguientes reciben NULL.
- Guarda estado oculto, así que no puede anidarse ni compartirse.
Palabras clave y builtins usados aquí
NULLcharconstforintreturnvoidwhile
El intento, en números
- Líneas
- 22
- Caracteres a escribir
- 457
- Tokens
- 154
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 92 segundos.
Paso 1 de 3 en Dividir y parsear; paso 8 de 13 en Cadenas y texto.