stdio

clearerrfclosefeofferrorfflush
fflushfgetcfgetposfgetsfopen
fscanffprintffputcfputcfputs
freadfreefreopenfseekfsetpos
ftellfwritegetcgetcharperror
printfputcputcharputsremove
renamerewindscanfsetbufsetvbuf
sprintfsscanftmpfiletmpnamungetc
vfprintfvprintfvsprintf

Función clearerr

void clearerr(FILE *stream);

La función clearerr despeja los indicadores de final de fichero y de posición de fichero para el stream apuntado por stream al comienzo del fichero.

Valor de retorno:

La función clearerr no retorna ningún valor.

Ejemplo:

Función fclose

int fclose(FILE *stream);

El stream apuntado por stream será despejado y el fichero asociado, cerrado.
Cualquier dato almacenado aún sin escribir para el stream será enviado al entorno local para escribirse en el fichero; cualquier dato almacenado aún sin leer será descartado. El stream está desasociado del fichero. Si el almacenamiento asociado fue automáticamente adjudicado, será desadjudicado.

Valor de retorno:

La función fclose devuelve cero si el stream se cierra con éxito. Si se detectaron errores, entonces devuelve EOF.

Ejemplo:

Función feof

int feof(FILE *stream);

La función feof comprueba el indicador de final de fichero para el stream apuntado por stream.

Valor de retorno:

La función feof retorna un valor distinto a cero si y sólo si el indicador de final de fichero está activado para el stream.

Ejemplo:

Función ferror

int ferror(FILE *stream);

La función ferror comprueba el indicador de errores para el stream apuntado por stream.

Valor de retorno:

La función ferror retorna un valor distinto a cero si y sólo si el indicador de errores está activado para el stream.

Ejemplo:

Función fflush

int fflush(FILE *stream);

Si stream apunta a un stream de salida o de actualización cuya operación más reciente no era de entrada, la función fflush envía cualquier dato aún sin escribir al entorno local o para ser escrito en el fichero; si no, entonces el comportamiento no está definido. Si stream es un puntero nulo, la función fflush se despeja para todos los streams cuyo comportamiento está descrito anteriormente.

Valor de retorno:

La función fflush retorna cero si el stream fue despejado con éxito. Si se detectan errores, entonces devuelve EOF.

Ejemplo:

Función fgetc

int fgetc(FILE *stream);

Esta función obtiene el carácter siguiente (si está presente) como un unsigned char convertido a int, desde el stream de entrada apuntado por stream, y avanza el indicador de posición de ficheros asociado al stream (si está definido).

Valor de retorno:

La función fgetc retorna el carácter siguiente desde el stream de entrada apuntado por stream. Si el stream está en el final de fichero, el indicador del final de fichero para el stream es activado y fgetc devuelve EOF. Si ocurre un error de lectura, el indicador de error para el stream es activado y fgetc devuelve EOF.

Ejemplo:

Función fgetpos

int fgetpos(FILE *stream, fpos_t *posicion);

La función fgetpos guarda el valor actual del indicador de posición de ficheros para el stream apuntado por stream en el objeto apuntado por posicion. El valor guardado contiene información no especificado servible a la función fsetpos para recolocar el stream a su posición cuando se llamó a la función fgetpos.

Valor de retorno:

La función fgetpos devuelve cero si es llevada a cabo con éxito. Si falla, la función retorna un valor distinto a cero y guarda un valor positivo, según la definición de la implementación del errno.

Ejemplo:

Función fgets

char *fgets(char *cadena, int n, FILE *stream);

Esta función lee como máximo uno menos que el número de caracteres indicado por n desde el stream apuntado por stream al array apuntado por cadena. Ningún carácter adicional es leído después del carácter de nueva línea (el cual es retenido) o después de un final de fichero (EOF). Escribe el carácter nulo inmediatamente después del último carácter leído desde el array.

Valor de retorno:

La función fgets retorna cadena si se realiza con éxito. Si encuentra un final de fichero (EOF) y no ha leido ningún carácter en el array, entonces el contenido del array permanece invariable devolviendo un puntero nulo. Si ocurre un error de lectura durante el proceso, el contenido del array es indeterminado devolviendo un puntero nulo.

Ejemplo:

Función fopen

FILE *fopen(const char *nombre, const char *modo);

Abre un fichero cuyo nombre es la cadena apuntada por nombre, y adjudica un stream a ello. El argumento modo apunta a una cadena empezando con una serie de caracteres de la siguiente secuencia:

Abriendo un fichero con el modo de lectura (r‘ como el primer carácter del argumento modo) fallará si el fichero no existe o no puede ser leído. Abriendo el fichero con el modo añadir (a‘ como el primer carácter del argumento modo) ocasiona todas las escrituras posteriores al fichero a ser forzadas al final de fichero (EOF) actual, sin considerar llamadas interventivas a la función fseek. En algunas implementaciones, abriendo un fichero en modo binario con el modo de añadidura (‘b’como el segundo o tercer carácter del argumento modo) puede colocar, inicialmente, el indicador de posición de ficheros para el stream más allá de los últimos datos escritos, debido al relleno de caracteres nulos.

Cuando se abre un fichero con el modo de actualización (‘+’ como el segundo o tercer carácter del argumento modo), la entrada y salida pueden ser manipuladas desde el stream asociado. Sin embargo, la salida no puede estar seguida directamente de una entrada sin tener una llamada interventiva a la función fflush o a una función de manipulación del fichero de posición (fseek, fsetpos, o rewind), y la entrada no puede estar seguida directamente de una salida sin tener una llamada interventiva a una función de manipulación del fichero de posición, al menos que el proceso de entrada encuentre un final de fichero (EOF). Abriendo (o creando) un fichero de texto con el modo de actualización en lugar de abrir (o crear) un stream binario en algunas implementaciones.

Cuando se abre, un stream es almacenado completamente si, y sólo si, no hace referencia a un dispositivo interactivo. Los indicadores de error y final de fichero (EOF) para el stream son borrados.

Valor de retorno:

La función fopen devuelve un puntero al objeto controlando el stream. Si el proceso de abertura no realiza el final de fichero, entonces devuelve un puntero nulo.

Ejemplo:

Apertura de un archivo en modo de escritura usando fopen()

Apertura de un archivo en modo de lectura usando fopen()

Apertura de un archivo en modo append usando fopen()

Función fscanf

int fscanf(FILE *stream, const char *formato, …);

Valor de retorno:

La función fscanf retorna el número de datos de entrada asignados, que puede ser menor que ofrecido, incluso cero, en el caso de un error de asignación. Si ocurre un error de entrada antes de cualquier conversión, la función fscanf retorna el valor de la macro EOF.

Ejemplo:

Función fprintf

int fprintf(FILE *stream, const char *formato, …);

Esta función envía datos al stream apuntado por stream, bajo el control de la cadena apuntada por formato que especifica cómo los argumentos posteriores son convertidos para la salida. Si los argumentos son insuficientes para el formato, el comportamiento no está definido. Si el formato termina mientras quedan argumentos, los argumentos restantes son evaluados (como siempre) pero ignorados. La función devuelve el control cuando encuentra el final de la cadena formato.

Valor de retorno:

La función fprintf devuelve el número de caracteres transmitidos, o un valor negativo si se produce un error de salida.

Ejemplo:

Función fputc

int fputc(int c, FILE *stream);

Esta función escribe el carácter indicado por c (convertido a un unsigned char) al stream de salida apuntado por stream, en la posición indicada por el indicador de posición de ficheros asociado al stream (si está definido), y
avanza el indicador apropiadamente. Si el fichero no soporta las peticiones de posición, o si el stream fue abierto en el modo añadido (append), el carácter es añadido al stream de salida.

Valor de retorno:

La función fputc devuelve el carácter escrito. Si ocurre un error de escritura, se activa el indicador de error para el stream y fputc devuelve EOF.

Ejemplo:

Función fputs

int fputs(const char *cadena, FILE *stream);

Esta función escribe la cadena apuntada por cadena al stream apuntado por stream. El carácter nulo no se escribe.

Valor de retorno:

La función fputs devuelve EOF si ocurre un error de escritura, si no, entonces devuelve un valor no negativo.

Ejemplo:

Función fread

size_t fread(void *puntero, size_t tamanyo, size_t nmemb, FILE *stream);

La función fread recibe, en el array apuntado por puntero, hasta nmemb elementos cuyo tamaño es especificado por tamanyo, desde el stream apuntado por stream. El indicador de posición de ficheros para el stream (si está definido) es avanzado por el número de caracteres leídos correctamente. Si existe un error, el valor resultante del indicador de posición de ficheros para el stream es indeterminado. Si un elemento es parcialmente leído, entonces su valor es indeterminado.

Valor de retorno:

La función fread devuelve el número de caracteres leídos correctamente, el cual puede ser menor que nmemb si se encuentra un error de lectura o un final de fichero. Si tamanyo o nmemb es cero, fread devuelve cero, y el contenido del array y el estado del stream permanecen invariables.

Ejemplo:

Función free

void free(void *ptr);

Causa el espacio apuntado por ptr para ser desadjudicado, esto es, estar disponible para otra adjudicación. Si ptr es un puntero nulo, no se realizará ninguna acción. De lo contrario, si el argumento no corresponde a un puntero previamente devuelto por la función calloc, malloc, o realloc, o si el espacio ha sido desadjudicado por una llamada a free o realloc, el comportamiento no está definido.

Valor de retorno:

La función free no devuelve ningún valor.

Ejemplo:

Función freopen

FILE *freopen(const char *nombre, const char *modo, FILE *stream);

Abre un fichero cuyo nombre es la cadena apuntada por nombre y adjudica un stream a ello apuntado por stream. El argumento modo es usado como en la función fopen.

La función freopen primeramente intenta cerrar cualquier fichero que esté asociado con el stream especificado. Se ignora el error por no cerrar el fichero con éxito. Los indicadores de error y final de fichero (EOF) para el stream son borrados.

Valor de retorno:

La función freopen dvuelve un puntero nulo si el proceso de apertura falla. De no ser así, freopen devuelve el valor de stream.

Ejemplo:

Función frexp

double frexp(double valor, int *exp);

Parte en dos el número de coma flotante en una fracción normalizada y un entero con potencia a la 2. Guarda el entero en el objecto int apuntado por exp.

Valor de retorno:

La función frexp retorna el valor de x de tal manera que x es un double con magnitud en el intervalo [1/2, 1] o cero, y valor = x * 2 * exp. Si valor es cero, ambas partes del resultado serán cero.

Ejemplo:

Función fseek

int fseek(FILE *stream, long int desplazamiento, int origen);

fseek se usa para mover el puntero de archivo asociado con un archivo dado a una posición específica.

Valor de retorno:

La función fseek devuelve un valor distinto a cero sólo si una petición no se pudo satisfacer.

Ejemplo:

Función fsetpos

int fsetpos(FILE *stream, const fpos_t *posicion);

La función fsetpos activa el indicador de posición de ficheros para el stream apuntado por stream según el valor del objeto apuntado por posicion, el cual será un valor obtenido de una llamada previa a la función fgetpos del mismo stream. Una llamada correcta a la función fsetpos despeja el indicador de final de fichero para el stream y deshace cualquier efecto producido por la función ungetc en el mismo stream. Después de una llamada a fsetpos, la siguiente operación en un stream de actualización que puede ser de entrada o salida.

Valor de retorno:

La función fsetpos devuelve cero si es llevada a cabo con éxito. Si falla, la función devuelve un valor distinto de cero y guarda un valor positivo, según la definición de la implementación, en errno.

Ejemplo:

Función ftell

long int ftell(FILE *stream);

La función fseek obtiene el valor actual del indicador de posición de fichero para el stream apuntado por stream. Para un stream binario, el valor es el número de caracteres desde el principio del fichero. Para un stream de texto, su
indicador de posición de fichero contiene información no especificado, sirve para la función fseek para devolver el indicador de posición de fichero para el stream a su posición cuando se llamó a ftell; la diferencia entre los dos valores de retorno no es necesariamente una medida real del número de caracteres escritos o leídos.

Valor de retorno:

La función ftell devuelve el valor del indicador de posición de fichero para el stream, si se tiene éxito. Si falla, la función ftell devuelve -1L y guarda un valor positivo, según la definición de la implementación, en errno.

Ejemplo:

Función fwrite

size_t fwrite(const void *puntero, size_t tamanyo, size_t nmemb, FILE *stream);

La función fwrite envía, desde el array apuntado por puntero, hasta nmemb de elementos cuyo tamaño es especificado por tamanyo, al stream apuntado por stream. El indicador de posición de ficheros para el stream (si está definido) es avanzado por el número de caracteres escritos correctamente. Si existe un error, el valor resultante del indicador de posición de ficheros para el stream es indeterminado.

Valor de retorno:

La función fwrite devuelve el número de caracteres escritos correctamente, el cual puede ser menor que nmemb, pero sólo si se produce un error de escritura.

Ejemplo:

Función getc

int getc(FILE *stream);

Esta función es equivalente a fgetc, excepto que si es implementado como una macro, puede evaluar los stream más de una vez – el argumento debería ser una expresión sin efectos secundarios.

Valor de retorno:

La función getc devuelve el carácter siguiente desde el stream de entrada apuntado por stream. Si el stream está en el final de fichero, el indicador del final de fichero para el stream es activado y getc devuelve un EOF. Si ocurre un error de lectura, el indicador de error para el stream es activado y getc devuelve EOF.

Ejemplo:

Función getchar

int getchar(void);

Esta función es equivalente a getc con el argumento stdin.

Valor devuelto:

La función getchar devuelve el carácter siguiente desde el stream de entrada apuntado por stream. Si el stream llega al final del fichero, el indicador del final de fichero para el stream se activa y getchar devuelve EOF. Si ocurre un error de lectura, se activa el indicador de error para el stream y getchar devuelve EOF.

Ejemplo:

Función perror

int perror(char *cadena);

La función perror transforma el número de error en una expresión entera de errno a un mensaje de error. Escribe una secuencia de caracteres al stream estándar de errores, esto es: primero (si cadena no es un puntero nulo y el carácter apuntado por cadena no es el carácter nulo), la cadena apuntada por cadena seguido de dos puntos (:) y un espacio; mostrará un mensaje con los errores apropiados seguido por un carácter de línea nueva. El contenido de los mensajes de errores es el mismo que aquello retornado por la función strerror con el argumento errno, que están definidos según la implementación.

Valor de retorno:

La función perror no devuelve ningún valor.

Ejemplo:

Función printf

int printf(char *cadena, const char *formato, …);

Esta función es equivalente a fprintf, con el argumento stdout interpuesto antes de los argumentos de printf.

Valor de retorno:

La función printf devuelve el número de caracteres transmitidos, o un valor negativo si se produce un error de salida.

Ejemplo:

Función putc

int putc(int c, FILE *stream);

Esta función es equivalente a fputc, excepto que si es implementado como una macro, puede evaluar stream más de una vez – el argumento debería ser una expresión sin efectos secundarios.

Valor de retorno:

La función putc devuelve el carácter escrito. Si ocurre un error de escritura, el indicador de error para el stream es activado y putc devuelve EOF.

Ejemplo:

Función putchar

int putchar(int c);

Esta función es equivalente a putc con el segundo argumento stdout.

Valor de retorno:

La función putchar devuelve el carácter escrito. Si ocurre un error de escritura, el indicador de error para el stream es activado y putchar devuelve EOF.

Ejemplo:

Función puts

int puts(const char *cadena);

Esta función escribe la cadena apuntada por cadena en el stream apuntado por stdout, y añade un carácter de línea nueva a la salida. No se escribe el carácter nulo al final.

Valor de retorno:

La función puts devuelve EOF si ocurre un error de escritura; si no, entonces devuelve un valor no negativo.

Ejemplo:

Función remove

int remove(const char *nombre);

El nombre del fichero apuntado por la cadena nombre ya no es accesible por ese nombre. Cualquier intento posterior a abrir el fichero usando ese nombre fallará, al menos que se cree de nuevo. Si el fichero está abierto el comportamiento de la función está definido según la implementación del compilador. Por esta razón se ha de cerrar antes de borrar.

Valor de retorno:

La función devuelve cero si la operación fue realizada con éxito. Si falla, entonces devolverá cualquier valor distinto de cero.

Ejemplo:

Función rename

int rename(const char *viejo, const char *nuevo);

El nombre del fichero apuntado como la cadena viejo será conocido como el nombre apuntado por la cadena nuevo. Cualquier intento posterior a abrir el fichero usando ese nombre fallará, al menos que se cree de nuevo. Si el fichero nombrado por como nuevo existe anteriormente a la llamada de la función rename, el comportamiento de la función está definido según la implementación del compilador.

Valor de retorno:

La función devuelve cero si la operación se realiza con éxito. Si falla, entonces devuelve un valor cualquiera diferente de cero; en este caso el fichero sigue seguirá con el nombre viejo.

Ejemplo:

Función rewind

void rewind(FILE *stream);

La función rewind coloca el indicador de posición de fichero para el stream apuntado por stream al comienzo del fichero. Es equivalente a (void) fseek( stream, 0L, SEEK_SET) excepto que el indicador de errores para el stream es despejado.

Valor de retorno:

La función rewind no devuelve ningún valor.

Ejemplo:

Función scanf

int scanf(const char *formato, …);

Esta función es equivalente a fscanf con el argumento stdin intercalado antes de los argumentos a scanf.

Valor de retorno:

La función scanf devuelve el número de datos asignados en la entrada, este dato puede ser menor que el ofrecido, incluso cero, en el caso de un error de asignación. Si ocurre un error en la entrada antes de cualquier conversión, la función fscanf devuelve el valor de la macro EOF.

Ejemplo:

Función setbuf

void setbuf(FILE *stream, char *acumulador);

Esta función es equivalente a la función setvbuf pasando los valores _IOFBF para el modo y BUFSIZ para el tamaño, o (si acumulador es un puntero nulo), con el valor _IONBF para el modo.

stdout y stdin no son almacenados si no que son redirigidos; de lo contrario, seran completamente almacenados. «No Almacenados» quiere decir que los caracteres escritos a un stream son inmediatamente transmitidos al fichero o dispostivo, mientras que «Almacenados» significa que los caracteres son acumulados y escritos como un bloque de información. La función setbuf produce resultados impredecibles al menos que sea llamado después de abrir el stream o después de llamar a fseek. Si llamamos a setbuf después del stream este aún no habrá almacenado nada y no causará problemas.

Valor de retorno:

La función setbuf no devuelve ningún valor.

Ejemplo:

Función setvbuf

int setvbuf(FILE *stream, char *acumulador, int modo, size_t tamanyo);

Esta función sólo puede ser usada después de que el stream apuntado por stream ha sido asociado con un fichero abierto y antes de otra operación cualquiera se lleve acabo en el stream. El argumento modo determina cómo el stream será almacenado según lo siguiente: _IOFBF genera la entrada/salida que se almacenara completamente; _IOLBF genera la entrada/salida que se almacenara por cada línea; _IONBF genera la entrada/salida que no será almacenada. Si el acumulador no es un puntero nulo, el array al que apunta puede ser usado en vez del acumulador adjudicado por la función setvbuf. El argumento tamanyo especifica el tamaño del array. El contenido del array en cualquier ocasión será indeterminado.

stdout y stdin no se almacenaran si no son redirigidos; de lo contrario, seran completamente almacenados. not stored (No Almacenados) quiere decir que los caracteres escritos a un stream son inmediatamente transmitidos al fichero o dispostivo, mientras que stored (Almacenados) significa que los caracteres son acumulados y escritos como un bloque de información en memoria.

Tabla con los tres valores de los modos:

Valor de retorno:

La función setvbuf devuelve cero cuando tiene éxito, o cualquier valor diferente de cero, si un valor no válido es pasado como un modo o si la operación no se puede llevar a cabo.

Ejemplo:

Función sprintf

int sprintf(char *cadena, const char *formato, …);

Esta función es equivalente a fprintf, excepto que el argumento cadena especifica un array en el cual la salida generada será escrita, en vez de un stream. Un carácter nulo se escribe al final de los caracteres escritos; no cuenta como parte de la suma devuelta. El comportamiento acerca de la copia entre objetos que se superpongan no está definido.

Valor de retorno:

La función sprintf devuelve el número de caracteres escritos en el array, sin contar el carácter nulo al final.

Ejemplo:

Función sscanf

int sscanf(const char *cadena, const char *formato,…);

Esta función es equivalente a fscanf, excepto que el argumento cadena especifica un array desde el cual se obtiene la entrada, en vez de un stream. El final de la cadena equivale a encontrar un final de fichero (EOF) en la función fscanf. El comportamiento de la copia entre objetos que se superpongan no está definido.

Valor de retorno:

Esta función devuelve el número de datos asignados en la entrada, que puede ser menor que el ofrecido, incluso cero, en el caso de un error de asignación. Si ocurre un error en la entrada antes de cualquier conversión, la función fscanf devuelve el valor de la macro EOF.

Ejemplo:

Función tmpfile

FILE *tmpfile(void);

Crea un fichero binario temporal que será borrado automáticamente cuando sea cerrado o al terminar el programa. Si el programa termina de forma anormal, el comportamiento de la función se definirá según la implementación del compilador; puede ser que el fichero sea borrado o no. El fichero es abierto con el modo «wb+».

Valor de retorno:

La función devuelve un puntero al fichero creado, cuando la operación sea realizada con éxito. Si el fichero no pudo ser creado, entonces la función devuelve un puntero nulo.

Ejemplo:

Función tmpnam

char *tmpnam(char *s);

Genera una cadena de caracteres con un nombre válido para los ficheros y que no es igual al nombre de un fichero existente. La función tmpnam genera una cadena diferente cada vez que es llamada, hasta un máximo de TMP_MAX veces. Si la función es llamada más veces que TMP_MAX, entonces el comportamiento de la función se define según la implementación del compilador.

Valor de retorno:

Si el argumento es un puntero nulo, la función tmpnam deja el resultado en un objeto estático interno y devuelve un puntero a dicho objeto. Las llamadas posteriores a la función pueden modificar el mismo objeto. Si el argumento no es un puntero nulo, entonces asume que apunta a un array/arreglo de al menos L_tmpnam caracteres; la función tmpnam escribe el resultado en el array/arreglo y devuelve el argumento como su valor.

Ejemplo:

Función ungetc

int ungetc(char c, FILE *stream);

Esta función envía el carácter especificado por c (convertido en unsigned char) en el stream de entrada apuntado por stream. Los caracteres apilados serán devueltos tras la lecturas del stream en orden inverso al que fueron
apilados. Una correcta llamada con capacidad para intervenir (con el stream apuntado por stream) en una función de posicionamiento de fichero (fseek, fsetpos, o rewind) descarta cualquier carácter apilado para el stream. El almacenamiento externo correspondiente al stream no varía.

Se garantiza un carácter apilado. Si la función ungetc es llamada demasiadas veces al mismo stream sin ninguna lectura para intervenir o una operación de posicionamiento de fichero en ese stream, entonces la operación falla. Si el valor de c es igual a la macro EOF, la operación falla y el stream de entrada no varía.

Una llamada con exito a la función ungetc liberaliza el indicador de final de fichero para el stream. El valor del indicador de posición de los ficheros para el stream después de leer o descartar todos los caracteres apilados será el mismo que era antes de que los caracteres fueran apilados. Para un stream de texto, el valor de su indicador de posición de ficheros después de una llamada con éxito a la función ungetc no es especificado hasta que todos los caracteres apilados sean leídos o descartados. Para un stream binario, el valor de su indicador de posición de ficheros es determinado por cada llamada con éxito a la función ungetc; si su valor era cero antes de la llamada, resultará dudoso después de la llamada.

Valor de retorno:

La función ungetc devuelve el carácter apilado trás la conversión. Si la operación falla, entonces devuelve EOF.

Ejemplo:

Función vfprintf

int vfprintf(FILE *stream, const char *formato, va_list argumentos);

Esta función es equivalente a fprintf, con la lista de argumentos de variables reemplazado por argumentos, que se inicializa desde la macro va_start (y posiblemente) por llamadas posteriores a va_arg. La función vfprintf no invoca a la macro va_end.

Valor de retorno:

La función vfprintf devuelve el número de caracteres transmitidos, o un valor negativo si se produce un error de salida.

Ejemplo:

Función vprintf

int vprintf(const char *formato, va_list argumentos);

Esta función es equivalente a printf, con la lista de argumentos de variables reemplazado por argumentos, que habrá sido inicializado por la macro va_start (y posiblemente) por llamadas posteriores a va_arg. La función vprintf no invoca a la macro va_end.

Valor de retorno:

La función devuelve el número de caracteres transmitidos, o un valor negativo si encuentra un error en la salida.

Ejemplo:

Función vsprintf

int vsprintf(char *cadena, const char *formato, va_list argumentos);

Esta función es equivalente a sprintf, con la lista de argumentos de variables reemplazado por argumentos, que ha sido inicializado por la macro va_start (y posiblemente) por llamadas posteriores a va_arg. La función vsprintf no invoca a la macro va_end. Si se copian objetos que se superponen, no está definido su comportamiento.

Valor de retorno:

La función vsprintf devuelve el número de caracteres escritos en el array, sin contar el carácter nulo del final.

Ejemplo: