retour de valeur en c - C - Programmation
Marsh Posté le 18-10-2011 à 18:09:04
zownierd a écrit : |
exact !
zownierd a écrit :
par
|
Déjà une remarque : si ta variable "resultat" est traitée comme une chaîne de caractères (puisque tu utilises strcat dessus), il faut prévoir aussi le caractère de fin de chaine donc +1 dans la taille du malloc.
zownierd a écrit : |
Du coup, est-ce que cet horrible message ne viendrait pas du manque de place pour le caractère de fin de chaine ?
zownierd a écrit : |
Disons que ta fonction n'est plus réentrante, mais ca n'est pas gênant dans un contexte non multithread.
Marsh Posté le 18-10-2011 à 20:47:30
Et encoderChar() ressemble à quoi?
Marsh Posté le 18-10-2011 à 21:26:05
Tu peux également passer par les paramètres de fonction pour retourner le résultat en passant l'adresse du buffer qui contiendra le résultat, plutot que de le retourner par le retour fonction.
Ex :
Code :
|
Tip : j'ai juste modifié le code pour effectuer ce que je te propose, il manque évidemment un tas de tests ( comme vérifier la validité des pointeurs passés en paramètre par exemple ).
Marsh Posté le 19-10-2011 à 10:45:03
merci beaucoup ca a marché ! je vais pouvoir continuer mon programme tranquille ^^
Marsh Posté le 18-10-2011 à 17:43:04
Bonjour,
j'apprends actuellement le C en cours et j'ai eu un petit projet à faire, un programme qui coderait et décoderait du morse en langage clair.
J'en ai déjà fait un petit bout mais je suis bloqué depuis un bon moment et le prof un peu de mal à m'aider ...
voici la fonction en question
et le main :
le problème est que si j'ai bien compris, le ta'bleau "resultat" que j'ai créé dans la fonction est détruit dès qu'on quitte la fonction.
J'ai vu sur le net que procéder à une allocation dynamique du tableau pourrait peut-être le faire perdurer dans la main ...
j'ai donc remplacé la déclaration :
par
seulement voilà ...
Visual studio plante et m'affiche :
Windows has triggered a breakpoint in progMorse.exe.
This may be due to a corruption of the heap, which indicates a bug in progMorse.exe or any of the DLLs it has loaded.
This may also be due to the user pressing F12 while progMorse.exe has focus.
The output window may have more diagnostic information.
mon prof m'a fait mettre un "static" devant la déclaration du tableau pour se rendre compte du problème mais ce n'est pas une solution très propre je trouve ...
Au cas ou l'un d'entre vous ait un bon éclaircissement à me fournir, je suis preneur