2012-06-05 10 views
5

Se me confunde con la función snprintf. En primer lugar, no he encontrado la función snprintf en un compilador turbo C versión bajo stdio.h En segundo lugar en un compilador GNU snprintf está devolviendo -1 cuando el tamaño del buffer es menor que el de la cadena formateada, aunque debería devolver el número de caracteres se han impreso si el tamaño del buffer era suficientemente grande. Tengo la siguiente fuente:snprintf confusion

#include<stdio.h> 
int main() 
{ 
    char str[100]; 
    int numchar = snprintf(str,2,"ello jdj"); 
    printf("%d\n",numchar); 
    return 0; 
} 

Este código debería dar como resultado 8 de acuerdo con lo que sé sobre snprintf hasta el momento. pero está devolviendo -1 en mi compilador GNU. ¿Cuáles son los hechos detrás?

Respuesta

5

Parece que está utilizando una versión anterior de glibc. Desde la página del manual de snprintf:

La implementación de glibc de las funciones snprintf() y vsnprintf() se ajusta al estándar C99, es decir, se comporta como se describe anteriormente, desde la versión glibc 2.1. Hasta glibc 2.0.6 devolverían -1 cuando la salida fue truncada.