racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 2014
-
24 août 2006 à 01:30
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 2014
-
24 août 2006 à 20:27
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 24 août 2006 à 20:27
Sa solution serait peut être complète s'il avait écrit réuni tout le source dans un seul fichier et en écrivant sur la console au lieu d'écrire dans un fichier. Ce n'est pas la plus courte, mais c'est une solution parmi d'autres.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 24 août 2006 à 19:38
Son code ne correspond pas au challenge car comme tu l'a dit il y a le code du .h et surtout le fichier source est copié tel quel en ressource, donc il n'y a même pas d'astuce
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 24 août 2006 à 19:32
Note pour les admins : Ce serait dommage d'effacer ce source. Il n'est bien sûr pas très utile, mais il montre du c un peu limite (Il fait partie des "Advanced Programming Challenges").
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 24 août 2006 à 19:28
Voila qui est déja plus intéressant a mon avis (bien qu'inutile, mais c'est quand même un programme difficile à trouver)
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 24 août 2006 à 19:08
héhé,
Merci pour cette curiosité mais c'est la version windows.
Et la tienne ne tient pas compte du rc.h et de la fonction lire_source(), elle n'est donc pas complète.
Le sujet de ce challenge était "Write the shortest program that, when run, will print out its source code. This source code, in turn, should compile and print out itself."
le gagnant (version *nix, ne compilera probablement pas avec les visual studio/express ou autre, mais fonctionne avec cygwin) est :
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 24 août 2006 à 15:35
+1 pour la suppression, bien entendu
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 24 août 2006 à 15:34
Le plus dur c'est de le faire sans ressources: un simple programme qui affiche son code source dans la console
Ce code a quand même l'intérêt de regrouper pas mal d'erreurs à ne pas faire:
#include <stdio.h>
#include
iostream.h n'existe plus, c'est iostream. Et dans ce cas stdio.h ne sert à rien (pourquoi utiliser cout la console et fopen pour les fichiers? Tu codes en C ou en C++ mais pas les deux à la fois)
Définition de fonction dans un header!
Ecriture d'un fichier caractères par caractères, alors que tu pourrais tout écrire en une fois (tu as le buffer et sa taille)
Je suis d'accord avec toi que le programme est simple, par contre il n'y a absolument rien d'intriguant!
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 24 août 2006 à 15:32
Suppression prévue en soirée.
wxccxw
Messages postés755Date d'inscriptionsamedi 15 mai 2004StatutMembreDernière intervention30 janvier 2011 24 août 2006 à 11:14
un peu leger comme code.
sinon bonne continuation, pour des projets plus serieux.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 24 août 2006 à 04:28
MuPuF >> Merci pour ces explications. Le problème c'est que la ressource contenue dans l'EXE risque d'être elle aussi corrompue.
Donc rien n'est garanti avec cette méthode.
MuPuF
Messages postés536Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention22 août 2008 24 août 2006 à 02:29
racpp : il y en a une seulement pour les hashs. Je m'explique, tu veux verifier que ton exe est pas corrompus, il te faut un hash de l'exe, cependant, comment mettre le hash de l'exe dans l'exe ? Et bien dans ces cas là y'a une technique, ne pas tenir compte de la zone mémoire ou se situe le hash et faire de l'ajout direct en hexa mais bon voila, ici c'est afficher le code source, c'est plus simple grace aux ressources en effets, mais d'une utilité vaseuse lol.
En espérant avoir relevé l'astuce de l'auteur avec un exemple plus concret, cpluplussement, MuPuF
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 24 août 2006 à 01:30
Salut,
Tu peux nous expliquer l'intérêt de ce code? Essaie de nous faire un code qui apporte quelque chose de nouveau. Personnellement je ne vois aucune utilité dans ton code.
24 août 2006 à 20:27
24 août 2006 à 19:38
24 août 2006 à 19:32
#include <stdio.h>
char *p "#include <stdio.h>%cchar *p %c%s%c;%cint main()%c{%cprintf(p, 10, 34, p, 34, 10, 10, 10, 10, 10, 10);%c return 0;%c}%c";
int main()
{
printf(p, 10, 34, p, 34, 10, 10, 10, 10, 10, 10);
return 0;
}
On gagne encore 6 x 6 (rogram) = 36 caractères.
Note pour les admins : Ce serait dommage d'effacer ce source. Il n'est bien sûr pas très utile, mais il montre du c un peu limite (Il fait partie des "Advanced Programming Challenges").
24 août 2006 à 19:28
24 août 2006 à 19:08
Merci pour cette curiosité mais c'est la version windows.
Et la tienne ne tient pas compte du rc.h et de la fonction lire_source(), elle n'est donc pas complète.
Le sujet de ce challenge était "Write the shortest program that, when run, will print out its source code. This source code, in turn, should compile and print out itself."
le gagnant (version *nix, ne compilera probablement pas avec les visual studio/express ou autre, mais fonctionne avec cygwin) est :
#include <stdio.h>
char *program "#include <stdio.h>%cchar *program %c%s%c;%cint main()%c{%cprintf(program, 10, 34, program, 34, 10, 10, 10, 10, 10, 10);%c return 0;%c}%c";
int main()
{
printf(program, 10, 34, program, 34, 10, 10, 10, 10, 10, 10);
return 0;
}
Une petite perle du c.
24 août 2006 à 15:35
24 août 2006 à 15:34
Ce code a quand même l'intérêt de regrouper pas mal d'erreurs à ne pas faire:
#include <stdio.h>
#include
iostream.h n'existe plus, c'est iostream. Et dans ce cas stdio.h ne sert à rien (pourquoi utiliser cout la console et fopen pour les fichiers? Tu codes en C ou en C++ mais pas les deux à la fois)
Définition de fonction dans un header!
Ecriture d'un fichier caractères par caractères, alors que tu pourrais tout écrire en une fois (tu as le buffer et sa taille)
Je suis d'accord avec toi que le programme est simple, par contre il n'y a absolument rien d'intriguant!
24 août 2006 à 15:32
24 août 2006 à 11:14
sinon bonne continuation, pour des projets plus serieux.
24 août 2006 à 04:28
Donc rien n'est garanti avec cette méthode.
24 août 2006 à 02:29
En espérant avoir relevé l'astuce de l'auteur avec un exemple plus concret, cpluplussement, MuPuF
24 août 2006 à 01:30
Tu peux nous expliquer l'intérêt de ce code? Essaie de nous faire un code qui apporte quelque chose de nouveau. Personnellement je ne vois aucune utilité dans ton code.