Salut,
M'est avis que tu devrais eng
ton prof pour encore oser parler des chaines "C style" (tableau de caractères terminé par un '\0') dans un cours de C++...
Du moins, tu devrais essayer (aussi gentiment que possible, étant donné que c'est lui qui a les rennes de tes résultats) de lui faire comprendre qu'il est largement déconseillé d'utiliser les fonctions et les possiblités issues du C quand une alternative existe en C++.
En effet, il faut prendre conscience du fait que, si une alternative propre au C++ à une possibilité issue du C existe, elle est globalement bien plus sécurisante à utiliser que la possibilité issue du C équivalente.
De plus, le C++ étant un langage orienté objet, dont l'objectif est aussi de permettre la réutilisation du code, il est particuliè!rement domage de se passer de ses atouts... surtout en période d'apprentissage: les mauvaises habitudes sont bien plus facile à prendre - et assez bizarement plus difficiles à perdre - que les bonnes et un apprentissage digne de se nom devrait quand meme essayer de donner les bonnes habitudes [clindoeil]
Enfin, bien que le C++ hérite directement du C et qu'il ne renie absolument pas ses origines, j'ai toujours considéré comme abherrant de partir du C pour essayer d'apprendre le C++, et, il se fait que, pour ce qui concerne la gestion de chaines de caractères, il existe une alternative de manière standard: la classe string, disponible dans l'espace de noms std par inclusion du fichier d'en-tête <string> et qui permet même d'obtenir une chaine de caractères C style en cas de besoin, tout en t'évitant les soucis dus à la gestion dynamique de la mémoire que l'on peut rencontrer en C.
@s4t4n>>
Les codes que tu fournis sont peut être très beau et (comme je n'ai fait que les parcourir distraitement) peut être tout à fait justes en C, mais tu devrais aussi méditer sur ce que je viens d'écrire.
La principale preuve de ce que j'avance vient du fait que gcc va compiler les fichiers dont l'extension est *.c comme étant... des fichiers sources contenant du C et non du C++: Les extensions reconnues comme devant être compilées avec le compilateur C++ sont *.cpp, *.cxx et -sous unixoide uniquement (ou du moins les systèmes d'exploitations senibles à la casse pour les noms de fichiers, ce qui disqualifie windows) -*.C (en majuscule
En effet, les fichiers stdio.h, stdlib.h et string.h sont autant de fichiers d'en-tête issus du C dont l'usage n'est vraiment pas recommandé en C++.
Les deux premiers par exemple seraient avantageusement remplacés par le fichier <iostream> et, pour le dernier, reporte toi à ce qui est dit plus haut [clindoeil]
En effet, l'inclusion de <iostream> permet de disposer, entre autres, des classes cin pour les flux entrants (le clavier) et de cout pour les flux sortants (l'écran), toutes deux également disponibles dans l'espace de noms std.