-- 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.
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
En Xns94C3DA2046132hsnoservernet@212.27.42.73, 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).
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
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
"Antoine Leca" <root@localhost.gov> writes:
En 4073AEF4.7C7B0FD2@NO.unilog.SPAM.fr, 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
-- 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
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 */
Jean-Marc Bourguet wrote:
"Antoine Leca" <root@localhost.gov> writes:
En 4073AEF4.7C7B0FD2@NO.unilog.SPAM.fr, 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 */
-- 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 */
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
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
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
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
En pxbsmfg9pui.fsf@news.bourguet.org, 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. ;-)
-- 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
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
En pxbfzbg9m61.fsf@news.bourguet.org, 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.
#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
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
Dans l'article <pxbfzbg9m61.fsf@news.bourguet.org>,
Jean-Marc Bourguet <jm@bourguet.org> é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 <vincent@vinc17.org> - 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
#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