
Envoyé par
Pacorabanix
que ça te retourne -3 est étrange en effet, mais de toute façon f[i+2] est un char et vaut le code associé au caractère '2' et certainement pas 2.
tu dois utiliser la fonction atoi() :
1 2 3 4 5 6 7 8 9 10 11
|
#include <cstdlib>
int main {
char texte[2]="12";
int resultat;
resultat = atoi(texte[0]) + atoi(texte[1]); /* resultat fait 3 */
} |
Aïe! Comportement indéterminé... Si tu veux stocker la chaine "12" dans le tableau texte, ce dernier doit être de taille au moins 3 caractères. Dans ton cas, tu as un débordement de tampon.
Par ailleurs, le prototype de la fonction atoi() est:
int atoi(const char *nptr);
Elle attend donc en argument un pointeur sur un char non modifiable, et tu lui passe un caractère. Il y a un problème. De plus, on préfère utiliser strtol() plutôt que atoi(), ce qui permet de faciliter la gestion des erreurs.
Enfin, pour terminer, cstdlib est un fichier d'en-tête de C++. En C, il faut inclure stdlib.h.
Thierry
Partager