OVH Cloud OVH Cloud

Utilisation du type FILETIME

30 réponses
Avatar
Jean-Luc Andréï
Salut,
comment peut afficher une donnée du type FILETIME avec printf ?
++

10 réponses

1 2 3
Avatar
Yves ROMAN



--
Tek
int main(void) {printf("Free The World !");} /* copyleft */
Il reste encore une erreur : ca m'étonne que personne ne l'ait encore

signalée...


le printf() qui n'est pas optimal ?

puts ?

int main(void) {puts("Free The World !");} /* copyleft */

ou tu pensais à autre chose ?

Il manque le code de retour depuis qu'il est passé de void main a int main()

int main(void) { return printf("Free The World !");} /* copyleft */



Avatar
Antoine Leca
En , Yves ROMAN va escriure:

--
Tek
int main(void) {printf("Free The World !");} /* copyleft */
Il reste encore une erreur : ca m'étonne que personne ne l'ait

encore signalée...


le printf() qui n'est pas optimal ?
puts ?
ou tu pensais à autre chose ?

Il manque le code de retour depuis qu'il est passé de void main a int



Il manque aussi la déclaration de printf.
Utiliser printf sans déclaration n'est pas du C conforme.

Bref, la version initiale possédait plus d'une erreur par mot.


Antoine

--
De l'intérêt du copyleft.




Avatar
Antoine Leca
En , Emmanuel Delahaye va
escriure:
comment peut afficher une donnée du type FILETIME avec printf ?


Type inconnu. Il faut chercher sa définition.


Pour ton information, c'est un entier sur 64 bits (compte de
décimicrosecondes depuis 1600-01-01T00:00:00Z). Déclaré comme structure,
pour faire plus opaque.


Si c'est un entier, le type "%lu" avec (unsigned long) permet de
parer à toutes les éventualités (en C90).


Raté (cf. supra)

Pour C99, "%llu avec" (unsigned long long)


Encore raté, mais là tu devrais le savoir: en C99, il faut utiliser "%jd"
avec (intmax_t), ou "%ju" avec (uintmax_t). Les types sont déclarés dans
<inttypes.h> ou <stdint.h> (les deux sont valables pour un printf).

"%llu", c'est valable pour les compilateurs et bibliothèques (souvent Unix)
du temps intermédiaire, entre ~1994 et la compatibilité C99 (~2001).
Attention: il ne suffit pas d'un compilateur qui comprend long long: par
exemple, GNU C avec Mingw va rater lamentablement avec la version "normale"
de MSVCRT.DLL, parce que le code de Microsoft ne "comprend" pas "%llu" (je
crois qu'il considère le deuxième l redondant).

Avec une bibliothèque de Microsoft (ou équivalent), et en particulier
MSVCRT.DLL, la solution est "%I64d", et passer la valeur typée en 64 bits
(donc PAS un FILETIME, qui est souvent une structure, et donc qui serait
passée par référence sur un compilo 32 bits).


Antoine


Avatar
Jean-Marc Bourguet
"Antoine Leca" writes:

En , Yves ROMAN va escriure:

--
Tek
int main(void) {printf("Free The World !");} /* copyleft */
Il reste encore une erreur : ca m'étonne que personne ne l'ait

encore signalée...


le printf() qui n'est pas optimal ?
puts ?
ou tu pensais à autre chose ?

Il manque le code de retour depuis qu'il est passé de void main a int



Il manque aussi la déclaration de printf.
Utiliser printf sans déclaration n'est pas du C conforme.


Il manque aussi la gestion d'erreur de printf.

Qui s'y met pour une vraie version conforme et robuste?

A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org





Avatar
Alexandre BACQUART
Jean-Marc Bourguet wrote:
"Antoine Leca" writes:


En , Yves ROMAN va escriure:


--
Tek
int main(void) {printf("Free The World !");} /* copyleft */


Il reste encore une erreur : ca m'étonne que personne ne l'ait
encore signalée...


le printf() qui n'est pas optimal ?
puts ?
ou tu pensais à autre chose ?



Il manque le code de retour depuis qu'il est passé de void main a int


Il manque aussi la déclaration de printf.
Utiliser printf sans déclaration n'est pas du C conforme.



Il manque aussi la gestion d'erreur de printf.

Qui s'y met pour une vraie version conforme et robuste?


huhu... c'est qu'une signature à la base, je mettrai pas le #include.
Mais bon ça fait 3 fois que je le modifie pour faire plaisir aux
tatillons (qui ont raisons de l'être). Je crois que ça ira là.

--
Tek
int main(void) {printf("Free The World !"); return 0;} /* copyleft */






Avatar
DINH Viêt Hoà

Il manque aussi la déclaration de printf.
Utiliser printf sans déclaration n'est pas du C conforme.


Il manque aussi la gestion d'erreur de printf.

Qui s'y met pour une vraie version conforme et robuste?


extern int puts(const char * str); int main(void) {puts("Free The World !");exit(0)}

ou :

#include <stdio.h>
#include <stdlib.h>
int main(void) {printf("Free The World !n"); exit(EXIT_SUCCESS);}

vote à post levé ?

--
DINH V. Hoa,

"dans la famille, on est tous intelligents" -- sunZ


Avatar
Jean-Marc Bourguet
DINH Viêt Hoà writes:


Il manque aussi la déclaration de printf.
Utiliser printf sans déclaration n'est pas du C conforme.


Il manque aussi la gestion d'erreur de printf.

Qui s'y met pour une vraie version conforme et robuste?


extern int puts(const char * str); int main(void) {puts("Free The World !");exit(0)}

ou :

#include <stdio.h>
#include <stdlib.h>
int main(void) {printf("Free The World !n"); exit(EXIT_SUCCESS);}

vote à post levé ?


Ou est la gestion d'erreur?

#include <stdio.h>
#include <stdlib.h>
int main(void) {
return puts("Free The World !") >= 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org



Avatar
Antoine Leca
En , Jean-Marc Bourguet va escriure:

--
Tek
int main(void) {printf("Free The World !");} /* copyleft */
Il manque aussi la gestion d'erreur de printf.







Pourquoi faire ?

Soit c'est émis (retour sizeof "Free The World !" + 1 pour le caractère qui
manque), soit c'est marre, non ? En plus, tu vas avoir à gérer les cas
trodus, genre réponse positive ou nulle mais différente de 1+sizeof "Free
The World !", signal inéquivoque d'une erreur dans la bibliothèque. ;-)


Antoine






Avatar
Antoine Leca
En , Jean-Marc Bourguet va escriure:
Ou est la gestion d'erreur?


Celle de printf, ou celle de puts ?

#include <stdio.h>
#include <stdlib.h>
int main(void) {
return puts("Free The World !") >= 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}


Quand puts retourne 0 (conforme, à vue de nez), tu retourne EXIT_FAILURE.
Pas logique, je trouve.


Antoine

Avatar
Vincent Lefevre
Dans l'article ,
Jean-Marc Bourguet écrit:

Ou est la gestion d'erreur?

#include <stdio.h>
#include <stdlib.h>
int main(void) {
return puts("Free The World !") >= 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}


Pas suffisant. Il faut probablement fermer le fichier et tester
également le code de retour de fclose(). Et là encore, rien
n'indique que tout s'est passé sans problème (cas de redirection
de stdout sur un fichier en accès NFS).

Bref, les tests d'erreur concernant les entrées/sorties, c'est
ridicule, sauf dans le cas d'applications particulières.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

1 2 3