.\" Copyright (C) 1996 Andries Brouwer (aeb@cwi.nl) .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" .\" Rewritten old page, 960210, aeb@cwi.nl .\" Updated, added strtok_r. 2000-02-13 Nicolás Lichtmaier .\" Translated 11 Feb 1998 by Vicente Pastor Gómez .\" Translation revised 27 April 1998 by Juan Piernas .\" Traducción revisada por Miguel Pérez Ibars el 21-enero-2005 .\" .TH STRTOK 3 "13 febrero 2000" "GNU" "Manual del Programador de Linux" .SH NOMBRE strtok, strtok_r \- extraen un token de una cadena .SH SINOPSIS .nf .B #include .sp .BI "char *strtok(char *" s ", const char *" delim ); .sp .BI "char *strtok_r(char *" s ", const char *" delim ", char **" ptrptr ); .fi .SH DESCRIPCIÓN Un `token' es una cadena de caracteres no vacía que no está en la cadena \fIdelim\fP, seguida por \e0 o por un caracter que está en \fIdelim\fP. .PP La función \fBstrtok()\fP puede usarse para analizar (parse) la cadena \fIs\fP en tokens. La primera llamada a \fBstrtok()\fP debería tener \fIs\fP como primer argumento. Llamadas subsiguientes deberían tener el primer argumento puesto a NULL. Cada llamada devuelve un puntero al siguiente token, o NULL cuando no se pueden encontrar más tokens. .PP Si un token termina con un delimitador, este caracter de delimitación es sobreescrito con un \e0 y se guarda un puntero al siguiente caracter para la siguiente llamada a \fBstrtok()\fP. La cadena de delimitación \fIdelim\fP puede ser diferente para cada llamada. .PP La función .B strtok_r() es una versión reentrante de la función .B strtok() , que en lugar de usar su propio buffer estático, requiere uno previamente reservado por el usuario. Este puntero, el parámetro .I ptrptr , debe ser el mismo mientras se analiza la misma línea. .\" .SH EJEMPLO .\" A continuación se extraen palabras de una cadena, usando separadores .\" 'espacio en blanco', con: .\" .BR strtok_r() : .\" .PP .\" .nf .\" char buf[128]; .\" char *sep = " \\t\\n"; .\" char *tok, *cb; .\" .\" snprintf(buf, sizeof(buf), "%s", " One Two\\tThree\\nFour\\n\\n"); .\" .\" for ( tok = strtok_r(buf, sep, &cb); tok; .\" tok = strtok_r(NULL, sep, &cb) ) .\" printf("%s\\n", tok); .\" .fi .SH FALLOS Nunca use estas funciones. Si lo hace, tenga en cuenta que: .PP .RS Estas funciones modifican su primer argumento. .PP Estas funciones no pueden ser usadas con constantes de cadena. .PP La identidad del carácter delimitador se pierde. .PP La función .BR strtok () usa un buffer estático mientras analiza la línea, por lo que no es hilo-seguro. Use .BR strtok_r () si este asunto le preocupa. .RE .SH "VALOR DEVUELTO" La función \fBstrtok()\fP devuelve un puntero al siguiente token, o NULL si no hay más tokens. .SH "CONFORME A" .TP strtok() SVID 3, POSIX, BSD 4.3, ISO 9899 .TP strtok_r() POSIX.1c .SH "VÉASE TAMBIÉN" .BR index (3), .BR memchr (3), .BR rindex (3), .BR strchr (3), .BR strpbrk (3), .BR strsep (3), .BR strspn (3), .BR strstr (3)