IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Chaîne de caractères


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Par défaut Chaîne de caractères
    #include <iostream.h>

    int main ()
    {
    char test [10+1] ;
    cin >> test ;

    cout << "\n" ;
    cout << test [1] << "\n" ;
    cout << test [2] << "\n" ;
    cout << test [3] << "\n" ;
    cout << test [4] << "\n" ;
    cout << test [5] << "\n" ;
    cout << test [6] << "\n" ;
    cout << test [7] << "\n" ;
    cout << test [8] << "\n" ;
    cout << test [9] << "\n" ;
    cout << test [10] << "\n" ;

    return 0 ;
    }


    Je tape anonn et au lieu d'affihcer :
    a
    n
    o
    n
    n
    il s'affiche :

    n
    o
    n
    n
    et d'autres caractères (non demandés dans la chaîne).

    Pourquoi le premier caractère ne s'affiche pas ?
    Pourquoi certain caractère viennent se glisser en fin de chaîne ?

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Pourquoi le premier caractère ne s'affiche pas ?
    L'indice des tableaux commence à 0 et pas à 1.
    Pourquoi certain caractère viennent se glisser en fin de chaîne ?
    Parce que les autres éléments du tableau ne sont pas initialisés donc ils contiennent n'importe quoi.

  3. #3
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char test [10+1]={0} ;
    cin >> test ;
    cout << "\n" ;
    cout<<test<<"\n";

  4. #4
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Ne Jamais écrire ceci !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char test [10+1]={0} ;
    cin >> test ;
    Il n'y a rien de tel pour les débordements de capacité de buffers. Seule std::string permet de lire correctement des chaînes avec l'opérateur d'extraction des flux (op>>()).

    (Encore un cours de C traduit en C++ ?)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Ne Jamais écrire ceci !!!
    Trés juste.
    Une version plus sûre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char test [10+1]={0} ;
    cin.width(sizeof(test));
    cin >> test ;

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Par défaut
    OK, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Réponses: 2
    Dernier message: 18/10/2003, 14h42
  3. Chaînes de caractères
    Par Zazeglu dans le forum C
    Réponses: 3
    Dernier message: 28/08/2003, 16h20
  4. Inverser une chaîne de caractères
    Par DBBB dans le forum Assembleur
    Réponses: 2
    Dernier message: 30/03/2003, 11h09
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo