Bug étrange avec le string et les tableaux statiques

Fermé
dimaz - Modifié le 7 sept. 2019 à 19:50
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 8 sept. 2019 à 12:08
Bonjour,
J'ai le projet de crée un programme C++ capable de convertir les nombres écrit (par exemple : dix) en valeur numérique (ici c'est : 10). Sauf que j'ai un problème avec un string qui change de valeur sans que l'on lui ai demander.

J'ai réussis à extraire le bout de code qui bug dans ce programme (il est long mais facile à lire):

#include <iostream>

using namespace std;

int main()
{
    string mot;
    cout << "ecrit un mot" << endl; //j'écrit par exemple "coucou"
    getline(cin, mot);

    int const tailleListe = 17;

    string nombreListe [tailleListe];
    nombreListe[0] = "zero";
    nombreListe[1] = "un";
    nombreListe[2] = "deux";
    nombreListe[3] = "trois";
    nombreListe[4] = "quatre";
    nombreListe[5] = "cinq";
    nombreListe[6] = "six";
    nombreListe[7] = "sept";
    nombreListe[8] = "huit";
    nombreListe[9] = "neuf";
    nombreListe[10] = "dix";
    nombreListe[11] = "onze";
    nombreListe[12] = "douze";
    nombreListe[13] = "treize";
    nombreListe[14] = "quatorze";
    nombreListe[15] = "quinze";
    nombreListe[16] = "seize";
    nombreListe[17] = "vingt";

    cout<<mot<<endl; // et ce n'est plus "coucou" qui est enregistré mais "vingt" (le contenu de la dernière ligne du tableau statique)
    return 0;
}


Il s'agit de mon premier bug du genre.
Et je compile sous code::block

1 réponse

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
7 sept. 2019 à 20:19
Un tableau de taille 17 va de 0 à 16 (17 cases) donc taper en case 17 t'offre un petit buffer overflow, c'est déjà pas mal, car tu peux aussi avoir un SEG FAULT.
0
Effectivement, j'ai fait une erreur d'inattention. Merci de ton aide
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
8 sept. 2019 à 12:08
Si le problème est résolu, merci de marquer le sujet comme résolu.
0