Pointeur dans une fonction

Résolu
nemetos Messages postés 54 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 15 octobre 2009 - 19 nov. 2008 à 15:23
nemetos Messages postés 54 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 15 octobre 2009 - 19 nov. 2008 à 16:28
Bonjour,
voici mon problème : ce code marche

using namespace std;
#include
#include <stdio.h>


int lire(char *sMes,int iInf,int iSup);


int main()
{
 int i=lire("nombre ? ",0,10);
 cout << "i= " << i << endl;
    return 0;
}


int lire(char *sMes,int iInf,int iSup)
{
 char *cSaisie;
 int iNb;
 cout << sMes;
 do
 {
  cin >> cSaisie;
  iNb=atoi(cSaisie);
        if (iNb != 0 && cSaisie[0]!='0')
        {
            if (iNb >= iInf && iNb <= iSup) return iNb;
            else cout << " Valeur hors intervalle. Ressaisir la valeur : ";
        }
        else cout << "Votre saisie n'est pas numérique ";
 }
 while (1);
}

Par contre ceci compile mais plante lorsque je saisis une valeur et je voudrais savoir pourquoi:

using namespace std;
#include
#include <stdio.h>


int lire(char *sMes,int iInf,int iSup);
void test();


int main()
{
        test();
        return 0;
}


int lire(char *sMes,int iInf,int iSup)
{
 char *cSaisie;
 int iNb;
 cout << sMes;
 do
 {
  cin >> cSaisie;
  iNb=atoi(cSaisie);
        if (iNb != 0 && cSaisie[0]!='0')
        {
            if (iNb >= iInf && iNb <= iSup) return iNb;
            else cout << " Valeur saisie incorrect. Ressaisir la valeur : ";
        }
        else cout << "Votre saisie n'est pas numérique!! RESSAISISSEZ SVP!! ";
 }
 while (1);
}


void test()
{
    int i=lire("nombre ? ",0,10);
    cout << "i= " << i << endl;
}

Je sais qu'au lieu de mettre char *cSaisie je pourrais mettre char cSaisie[10] mais je voulais tester avec un pointeur.
Merci.

Pizza Dude

2 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
19 nov. 2008 à 16:02
 char *cSaisie;
 int iNb;
 cout << sMes;
 do
 {
  cin >> cSaisie;

=> il n'y a pas d'espace mémoire alloué pour cSaisie;
3
nemetos Messages postés 54 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 15 octobre 2009
19 nov. 2008 à 16:28
Merci j'ai rajouté cSaisie=(char *) malloc(sizeof(1)); et ça marche nickel

Pizza Dude
0
Rejoignez-nous