Posté(e) le 21 avril 200817 a Bonjour à tous, J'ai, dans le cadre de mon boulot à réaliser un petit "bizutage". Je dois réaliser un programme C# qui lors de son exécution affiche son code source. J'ai comme indice un code C/C++. Cependant, n'ayant jamais fait de C, j'aurais besoin de votre aide pour comprendre ce petit bout de code. char *s="main() { char *s=%c%s%c; printf(s,34,s,34); }"; printf(s,34,s,34); return 0; Je vous remercie d'avance :)
Posté(e) le 21 avril 200817 a Et pourquoi ne pas ouvrir le fichier de sources et afficher ligne par ligne ce qu'il contient ?
Posté(e) le 21 avril 200817 a Le petit bout de code, c'est déjà le programme qui se régénère tout seul. C'est assez connu. On l'appelait phoenix à l'école. Allez savoir pourquoi. EDIT : effectivement, comme dit lorinc, on peut faire un open sur le fichier source, mais ce n'est pas ce qui est recherché. Ça respecte peut être l'énoncé (à voir), mais pas l'esprit du sujet.
Posté(e) le 21 avril 200817 a Auteur La lecture du fichier est interdite bien évidemment ... Et même si elle ne l'était pas, je le ferais pas .... Mais personne peut me donner un indice sur ce que ce code veut dire ?
Posté(e) le 22 avril 200817 a Je pense que ce qui correspond le plus a ce que tu cherche, ca serait du coté du namespace Reflections en .net Ca permet d'obtenir des informations sur le langage/les fonctions utilisées. D'apres moi, c la qu'il faut regarder :)
Posté(e) le 23 avril 200817 a Ce code a pour fonction de produire un code identique à lui même. D'où l'intérêt du main dans la chaine de caractères. 16ar, je ne suis pas sûr que tu ais compris le problème ><
Posté(e) le 7 mai 200817 a Je pense que je réponds un peu tard (le bizutage dure rarement plus de deux semaines ;-)). A un moment donné je m'amusais bien avec ça, ça n'a rien de très compliqué, c'est même assez simple ; on appelle cela "Quine", Wikipedia y consacre d'ailleurs un article : http://fr.wikipedia.org/wiki/Quine_(informatique)#C.23 (d'ailleurs, en lien, le code pour C# ).
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.