begin process at 2012 05 30 01:56:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Problème avec cin.getline()


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème avec cin.getline()

lundi 15 janvier 2007 à 11:49:41 | Problème avec cin.getline()

monstor_rox

Bonjour a tous

J'ai un gros problème sur le code suivant :

char* menu() {
    cout<<"[1] -  Ajouter un expediteur\n";
    cout<<"[2] -  Ajouter un destinataire principal\n";
    cout<<"[3] -  Ajouter un destinataire en copie conforme\n";
    cout<<"[4] -  Ajouter un destinataire en copie cachee\n";
    cout<<"[5] -  Ajouter une piece jointe\n";
    cout<<"[6] -  Ajouter un sujet au message\n";
    cout<<"[7] -  Saisir le message\n";
    cout<<"[8] -  Envoyer le mail\n";
    cout<<"[9] -  Revenir au menu principal\n";
    cout<<"[10] - Quitter le programme"<<endl;
    char *c= new char[3];
    cin.getline(c,sizeof(c));
    return c;
}

while(!quitter) {
            bzero(choix,sizeof(choix));
            choix = menu();
            commande=atoi(choix);
            cout<<"commande = "<<commande<<endl;
            switch(commande){
                case 1 :
                case 2 :
                case 3 :
                break;
                case 4 :
                break;
                case 5 :
                break;
                case 6 :
                break;
                case 7 :
                    if(strlen(corps) == 0) {
                        cout<<"Entrez votre message"<<endl;
                        corps = (char*)malloc(10000);
                        cin.getline(corps,sizeof(corps));
                    }
                    else {
                        char choixM;
                        choixM = menuMail(corps);
                        if(choixM == '1') {
                            cout<<"Entrez votre message"<<endl;
                            char copie[strlen(corps)];
                            strcpy(copie,corps);
                            corps = (char*)malloc(strlen(copie)+10000);
                            strcpy(corps,copie);
                            cin.getline(corps+strlen(copie),10000);
                        }
                        else if(choixM == '2') {
                            cout<<"Entrez votre message"<<endl;
                            corps = (char*)malloc(10000);
                            cin.getline(corps,sizeof(corps));
                        }
                    }
                break;
                case 8 :
                break;
                case 9 :
                    quitter = true;
                break;
                case 10 :
                    exit(0);
                break;
                default :
                    cout<<"Veuillez entrer un numero de commande valide"<<endl;
                break;
}



Alors voila quand je demande la commande 7, je tape le texte à taper et j'ai ensuite mon menu qui tourne en boucle.
Je suppose que ca vien du cin.getline() qui ne ce bloque pas car il doit avoir un \n qui traine...

Si vous avez une solution je suis preneur!!!!
lundi 15 janvier 2007 à 20:08:01 | Re : Problème avec cin.getline()

juju12

case 7 :
     if(strlen(corps) == 0) {
     cout<<"Entrez votre message"<<endl;
     corps = (char*)malloc(10000);
     cin.getline(corps,sizeof(corps));

sizeof(corps)=1 (taille d'un char*) donc le prog ne met qu'un seul caractère dans corps soit le 0 fin de chaîne et ton code tourne en boucle...
A remplacer par cin.getline(corps,10000) ou 10000*sizeof(char) si tu veux.
Autre chose: y a plein de malloc et pas de delete qui vont avec....
A chaque fois que tu fais la boucle il y a donc une GROSSE fuite mémoire (10Ko rien que ça)
->A corriger d'urgence
lundi 15 janvier 2007 à 20:08:34 | Re : Problème avec cin.getline()

juju12

C'est pas delete c'est free, désolé.


Cette discussion est classée dans : case, break, char, cout, corps


Répondre à ce message

Sujets en rapport avec ce message

help me !!! [ par pascal13 ] j arrive pas a compiler mon programme...je sais que g qlq que souccis au niveau de la sauvegarde des données sur le fichier toutes remarques seront le menu en c/c++ avec un switch [ par sev622 ] bonjour, voilà, je voudrai faire un menu tout simple avec un switch dans un boucle while...mais j'y arrive pas. Voilà ce que j'ai fait : void main() client irc [ par tagboys ] bon j'ai trouver une source sur ce site ces un socket bot j'aimerait y rajouter quelque commands .la seul chose qu'il a ces le pong reply .j'aimerait randomize [ par niconico ] salut à tous, je débute en C++ et j'utilise VC++ pour compiler mes prog :le prob :avec ce petit programe (plus bas)il me sort 2 erreurs :error C2065: morpion [ par charon123 ] Bon, 1), je suis débutant et je viens de commencer il y a une semaine. 2)j'utilise dev-cpp es ce que c'est bien? 3)alors voila, j'essaye de faire un m Petit problem avec switch [ par Darkneon ] Salut, Mon but est de faire bouger le curseur a l'ecran avec les fleches et d'afficher une lettre a cette position.J'ai le codde suivant.#include &l Dumb debutant [ par akumageorges ] Bonjour tout le monde,je suis nouveau dans le site et debutant en programmation(utilisant C++).J'ecris juste pour demande de l'aide dans la constructi erreur a l'execution [ par vangeurmasker ] J'ai créé un projet sous VC++ 6 pour faire une calcullette qui annalyse une chaine entrée. Lors de la compilation je n'ai aucune erreur. C'est a l'exe utiliser une string avec switch/case [ par potimarara ] Salut a tous,J ai le code suivant qui a partir de un nom de ficher (avec extension) me renvoir un content-type.Le probleme est que lorsque j extrais l DATE MACHINE en C++ [ par eishtein ] bonjour tout la monde; pouvez vous m'aidez à optimiser la classe suivante de telle sorte à ce qu'elle nous donne la date courante: [code=cpp] class d


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales