PROGRAMME QUI AFFICHE SON CODE SOURCE

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 24 août 2006 à 01:30
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Derniè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.

https://codes-sources.commentcamarche.net/source/39246-programme-qui-affiche-son-code-source

cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
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és 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
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és 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
24 août 2006 à 19:32
En fait, la version la plus courte c'est :

#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").
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
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és 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
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 :

#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.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
24 août 2006 à 15:35
+1 pour la suppression, bien entendu
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
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és 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 août 2006 à 15:32
Suppression prévue en soirée.
wxccxw Messages postés 755 Date d'inscription samedi 15 mai 2004 Statut Membre Dernière intervention 30 janvier 2011
24 août 2006 à 11:14
un peu leger comme code.
sinon bonne continuation, pour des projets plus serieux.
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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és 536 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 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és 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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.
Rejoignez-nous