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 :

probleme avec variable char


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Par défaut probleme avec variable char
    Bonjour,

    j'ai fait un petit programme qui demande un mot
    puis l'affiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    #include <iostream.h>
    #include <stdlib.h> 
    #include <stdio.h>
    #include <conio.h>
     
    int main(void) 
    {
     
    void clrscr(void);
    char motUser[10];  // une variable alphanumérique
     
    cout << "entrez un mot , svp : ";
     
    cin >> motUser;
     
    cout << endl << motUser; 
     
    getch(); // empêcher la fenêtre de se fermer
     
    return 0; // on retourne sous windows
    }
    si j'entre un mot de 10 lettres ou moins , ca passe !
    par contre , si je tape un mot de onze lettres ou plus (exprès ) , le programme les affiche tous, hors je veux seulement les 10 lettres ( comme mon char a une taille dix cases, quelque chose cloche )

    comment faire?

    je vous remercie pour votre aide

  2. #2
    Membre éprouvé
    Inscrit en
    Mai 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2007
    Messages : 157
    Par défaut
    C'est un peu normal, l'utilisation de cin ne permet pas de limiter la saisie a la taille d'un conteneur.

    je peux te conseiller la chose suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #include <string>
    #include <iostream>
    #include <conio.h>
    using namespace std;
     
    #define TAILLE_MAX_CHAINE 10
     
    int main(void) 
    {
    void clrscr(void);
    string motUser;  // une variable alphanumérique
    char machaine[10];
     
    cout << "entrez un mot , svp : ";
    cin >> motUser;
    cout << endl << motUser; 
     
     
    motUser = motUser.substr(0,TAILLE_MAX_CHAINE); //soustrait une chaine de taille voulue
    strcpy(machaine,motUser.c_str()); // copie la chaine dans le containeur de type char*
    cout << endl << machaine; 
     
    getch(); // empêcher la fenêtre de se fermer
    return 0; // on retourne sous windows
    }
    Cdt


    ps: regarde ceci
    http://c.developpez.com/faq/cpp/?pag...INGS_avantages

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Par défaut
    Salut Rikau2

    Merci pour ton aide .
    j'ai essayé le code avec tes modifs et ça a marché !
    je vais aller jeter un oeil a ton lien,

    au revoir !

  4. #4
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Par défaut
    Oui je te conseille d'utiliser les strings de toute façon mais si vraiment tu dois utiliser un tableau de char... alors évite les débordements par tous les moyens! là tu écris en mémoire on ne sait pas où quand tu dépasse les 10 caractères et ca peut avoir des conséquences sur l'exécution de ton programme (ou tu auras juste un joli "segmentation fault" comme on les aime...).
    Dans ce cas utilise quelque chose du genre pour lire l'entrée caractère par caractère:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    char c = getChar();
    while(c!='\n' && nbCaracteresEntres<maxCaracteres)
    {
    maChaine[nbCaracteresEntres++]=c;
    c=getChar();
    }
    Là je peux pas tester faudrait peut-être rajouter un '\0' à la fin de ta chaine si tu veux l'afficher correctement.

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

Discussions similaires

  1. Probleme avec les Chars SQL Server
    Par Nico820 dans le forum Développement
    Réponses: 2
    Dernier message: 30/12/2010, 16h33
  2. probleme avec les char
    Par PastorTroy dans le forum Débuter
    Réponses: 5
    Dernier message: 12/01/2009, 18h46
  3. Petit probleme avec un char*
    Par Nebulis dans le forum C++
    Réponses: 5
    Dernier message: 19/12/2008, 18h58
  4. Probleme avec les char
    Par king67 dans le forum C
    Réponses: 11
    Dernier message: 10/11/2006, 23h15
  5. probleme avec variable
    Par kilanepa dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/04/2006, 15h08

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