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 :

[Debutant] Probleme stockage caractères


Sujet :

C++

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Par défaut [Debutant] Probleme stockage caractères
    Bonjour,

    Je débute dans le langage C. Je travaille sur Dev C++.

    Je voudrais dans une boucle 'for' demander l'utilisateur de rentrer un texte et de stocker celui ci suivant l'itération de la boucle.
    Mais je n'arive pas à m'en sortir avec le fait que ce soit des caractères et non des entiers ou réels.

    Mon programme actuel s'écrit comme ca :

    for(i=1;i<=nt;i++)
    {
    printf("\n Ecrivez le texte numero %d ? (ne pas mettre d'espace) \t",i);
    scanf("%s",&n);
    }

    Mais avec ceci, ma variable n ne garde que la dernière valeur du texte que rentre l'utilisateur.

    Je voudrais faire un tableau, mais je n'y arrive.

    Si quelqu'un sait comment faire?
    Je suis a son ecoute.

    Merci

    Sam

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Salut !

    Tu codes en C ou en C++ ?
    Si c'est en C, c'est pas le bon forum...

    nt est une constante ?
    Si oui, tu dois pouvoir t'en sortir à peu près en faisant par exemple :
    ce qui aura pour effet de créer un tableau de "nt" chaînes de caractères (avec 255 caractères max).

    exemple :
    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
    int main()
    {
        const int nt = 2;
        int i;
     
        char n[nt][255];
     
        for(i = 1; i <= nt; i++)
        {
            printf("\n Ecrivez le texte numero %d ? (ne pas mettre d'espace) \t",i);
            scanf("%s",n[i]);
        }
     
        for(i = 1; i <= nt; i++)
        {
            printf("%s\n", n[i]);
        }
    }
    Mais tu auras plus de réponses sur le forum C...

    PS :

  3. #3
    Membre chevronné Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Par défaut
    Citation Envoyé par Eusebe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        for(i = 1; i <= nt; i++)
    for(i = 0; i < nt; i++) plutôt, sinon BOUM, pareil pour la deuxième boucle.

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    printf, scanf et tableau de chaînes std::cout, std::cin et std::vector<std::string>.

    Sinon c'est du côté du forum C qu'il faut lorgner.

  5. #5
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Citation Envoyé par Mayti4
    for(i = 0; i < nt; i++) plutôt, sinon BOUM, pareil pour la deuxième boucle.
    Oups, oui, j'avais pas fait gaffe

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    scanf("%s",n[i]);
    Et si je saisis plus de 255 caractères ?

  7. #7
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Citation Envoyé par loufoque
    Et si je saisis plus de 255 caractères ?
    Ce que je proposais, c'était pour un début... (un premier programme en C)
    Après c'est sûr qu'il faut éviter scanf() et utiliser fgets() pour éviter les débordements...

  8. #8
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Par défaut Merci pour les reponses
    Merci a tous pour les reponses

    Ca a l'air de marcher maintenant

    Mais encore deux questions,

    Pourquoi BOUM si je mets "<=" a la place de "<"
    Parce que en ne mettant pas le signe = il me manque une information a completer !!!

    Et je voulais utiliser fgets() au lieu de scanf() comme vous me conseillez mais qund je fais le remplacement il me met
    "too few arguments to function 'fgets'"

    Sinon, je vais essayer la prochaine fois d etre dans le bon forum, mais je ne fais pas la difference entre le langage C et C++

    En tout cas merci a tous


  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 407
    Par défaut
    1. Tu n'as que nt valeurs, de 0 à nt-1 inclus.
    2. de mémoire: fgets(buf, taille, stdin);
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par samctc
    Pourquoi BOUM si je mets "<=" a la place de "<"
    parce que les tableaux en C/C++ sont idexés a partir de 0, ce qui veut dire que l'index du dernier élément n'est pas le nombre d'éléments mais ce nombre -1 !!!
    (c'est comme ca qu'arrivent les overflow de tableau - encore reconnus par "index out of bounds")

Discussions similaires

  1. [Debutant]Probleme pour Debugger sours JCreator
    Par Flam dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 1
    Dernier message: 12/05/2004, 20h27
  2. [Debutant] probleme pour utiliser les classes d'un .jar
    Par pissek dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 12/05/2004, 19h21
  3. Réponses: 2
    Dernier message: 04/01/2004, 16h14
  4. [debutant]probleme servlet
    Par noOneIsInnocent dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 26/09/2003, 14h25
  5. [debutant] Probleme pour dessiner un simple cube
    Par scorpiwolf dans le forum DirectX
    Réponses: 6
    Dernier message: 02/07/2003, 21h29

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