Pregunta

Esta pregunta ya tiene una respuesta aquí:

No sé el tipo de datos de time_t. Es un flotador doble o algo más? Porque si quiero mostrarlo Necesito la etiqueta que se corresponde con ella para printf. Puedo manejar el resto de allí para mostrar time_t pero necesito saber el tipo de datos que se corresponde con ella.

¿Fue útil?

Solución

Por desgracia, no es completamente portátil. Por lo general es integral, pero puede ser cualquier "número entero o real-flotante de tipo".

Otros consejos

Es la plataforma específica. Pero se puede echar a un tipo conocido.

printf("%lld\n", (long long) time(NULL));

Se puede utilizar la función de difftime. Se devuelve la diferencia entre dos valores time_t dadas, el valor de salida es double (ver documentación difftime ).

time_t actual_time;
double actual_time_sec;
actual_time = time(0);
actual_time_sec = difftime(actual_time,0); 
printf("%g",actual_time_sec);

Siempre se puede usar algo como mktime para crear un tiempo conocido (la media noche, la noche anterior) y el uso difftime para obtener una diferencia de tiempo de doble precisión entre los dos. Para una solución de plataforma independiente, a menos que vaya a cavar en los detalles de sus bibliotecas, usted no va a hacer mucho mejor que eso. De acuerdo con la especificación C, la definición de time_t es definido por la implementación (lo que significa que cada aplicación de la biblioteca puede definir que sin embargo que les gusta, siempre que las funciones de biblioteca con el uso que se comportan de acuerdo con la especificación.)

Una vez dicho esto, el tamaño de time_t en mi máquina Linux es de 8 bytes, lo que sugiere un largo int o un doble. Así que lo hice:

int main()
{
    for(;;)
    {
        printf ("%ld\n", time(NULL));
        printf ("%f\n", time(NULL));
        sleep(1);
    }
    return 0;
}

El tiempo propuesta por el LD% incrementa en uno cada paso y el flotador impreso 0,000 cada vez. Si usted está empeñado en usar printf a time_ts de visualización, su mejor apuesta es tratar de su propio experimento de este tipo y ver cómo funciona en su plataforma y con su compilador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top