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 :

Problème de fopen avec vista


Sujet :

C++

  1. #41
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Google m'a trouvé la doc, et elle confirme mes soupçons:
    Les pointeurs timeTmp et portTmp doivent être libérés avec free().
    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.

  2. #42
    Membre du Club Avatar de Verbalinsurection
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Points : 45
    Points
    45
    Par défaut
    Encore merci pour ta réponse, j'ai regardé la doc, effectivement il faut liberer avec free... Mais pourquoi? je comprend pas bien...
    Pour ceux qui aime quand ça coupe : http://lcdd.stass.eu

  3. #43
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    La réponse la plus simple, c'est : Parce que la fonction les alloue avec malloc().
    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.

  4. #44
    Membre du Club Avatar de Verbalinsurection
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Points : 45
    Points
    45
    Par défaut
    J'ai essayé ce que tu m'as dis mais sans resultat (pour le char**).
    Par contre j'ai rajouter les free
    Pour ceux qui aime quand ça coupe : http://lcdd.stass.eu

  5. #45
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Et comme ça ?
    Code C++ : 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
    26
    27
    void lectureIni(int *time, int *port, char ** addIp)
    {
    	c_inifile_init("gps.ini", NULL);
    	{
    		char *timeTmp = c_inifile_get_string("Gest-Parser Scanner", "Time", NULL);
    		char *portTmp = c_inifile_get_string("Server", "Port", NULL);
    		*time = atoi(timeTmp);
    		*port = atoi(portTmp);
    		*addIp = c_inifile_get_string("Server", "IP", NULL);
    		free(timeTmp);
    		free(portTmp);
    	}
    	c_inifile_close();
    }
     
    int main()
    {
    	int time;
    	int port;
    	char *addIp;
    	lectureIni(&time, &port, &addIp);
     
    	//...
     
    	free(addIp);
    	return 0;
    }

    Ou encore:
    Code C++ : 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
    26
    27
    28
    29
    30
    31
    32
    33
    #include <string>
    using namespace std;
     
    void lectureIni(int &time, int &port, string &addIp)
    {
    	c_inifile_init("gps.ini", NULL);
    	{
    		char *timeTmp = c_inifile_get_string("Gest-Parser Scanner", "Time", NULL);
    		char *portTmp = c_inifile_get_string("Server", "Port", NULL);
    		char *ipTmp = c_inifile_get_string("Server", "IP", NULL);
     
    		time = atoi(timeTmp);
    		port = atoi(portTmp);
    		addIp = ipTmp; //affectation d'un char* à une string: copie mais ne libère pas.
     
    		free(timeTmp);
    		free(portTmp);
    		free(ipTmp);
    	}
    	c_inifile_close();
    }
     
    int main()
    {
    	int time;
    	int port;
    	string addIp;
    	lectureIni(time, port, addIp);
     
    	//...
     
    	return 0;
    }
    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.

  6. #46
    Membre du Club Avatar de Verbalinsurection
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Points : 45
    Points
    45
    Par défaut
    Merci mais ça me plante le prog...
    Je comprend pas, ta premières solution ne compile pas, la deuxieme compile mais message d'erreur windows...
    (au fait j'ai remplcé les atoi() par des strtol().

    Si je commente addIp = ipTmp; ça passe....
    Pour ceux qui aime quand ça coupe : http://lcdd.stass.eu

  7. #47
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    1. Je suis surpris que la première version en compile pas. Peux-tu poster les erreurs ?
    2. Je suis surpris également. Tu peux essayer de remplacer par addIp.assign(ipTmp); pour voir si ça résout le problème...
    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.

  8. #48
    Membre du Club Avatar de Verbalinsurection
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Points : 45
    Points
    45
    Par défaut
    Pour ta deuxieme solution avec addIp.assign(ipTmp); ça plante toujours
    Pour la première voici les erreurs de compilo :
    Eu....y'en a plus, j'ai due me foiré lors de mon premier essai...snif... vraiment désolé...
    Mais par contre je n'ai rien dans addIp
    Voici mon code à nouveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void lectureIni(int *time, int *port, char ** addIp) {
        c_inifile_init("gps.ini", NULL);
        {
            char *timeTmp = c_inifile_get_string("Gest-Parser Scanner", "Time", NULL);
            *time = strtol(timeTmp, NULL, 0);
            char *portTmp = c_inifile_get_string("Server", "Port", NULL);
            *port = strtol(portTmp, NULL, 0);
            *addIp = c_inifile_get_string("Server", "IP", NULL);
            free (timeTmp);
            free (portTmp);
        }
        c_inifile_close();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int main() {
        int time;
        int port;
        char *addIp;
        lectureIni(&time, &port, &addIp);
     
        cout << time << endl;
        cout << port << endl;
        cout << addIp << endl;
        ...
    }
    Au fait, puisque qu'on fait un free sur les variable timeTmp et portTmp, les {} ne servent plus à rien non?
    Pour ceux qui aime quand ça coupe : http://lcdd.stass.eu

  9. #49
    Membre du Club Avatar de Verbalinsurection
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Points : 45
    Points
    45
    Par défaut
    OUPS!!!!
    Promis je tournerais 7 fois ma langue dans la bouche la prochaine fois, c'est bon, addIp a la bonne valeur, je m'étais trompé sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    *addIp = c_inifile_get_string("Server", "Ip", NULL);
    j'avais mis "IP" au lieu de "Ip"...
    Arg!
    Pour ceux qui aime quand ça coupe : http://lcdd.stass.eu

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Problème au lancement avec Vista
    Par directs dans le forum Langage
    Réponses: 1
    Dernier message: 13/09/2008, 12h21
  2. problème de souris avec vista
    Par niro75 dans le forum Windows Vista
    Réponses: 0
    Dernier message: 19/10/2007, 12h02
  3. Problème de boot avec vista
    Par Link61 dans le forum Windows Vista
    Réponses: 4
    Dernier message: 03/08/2007, 13h52
  4. Problème apparence avec Vista
    Par KryGonyT dans le forum Windows Vista
    Réponses: 2
    Dernier message: 14/04/2007, 02h09
  5. Problème graphique avec vista
    Par ibreak dans le forum Windows Vista
    Réponses: 7
    Dernier message: 21/12/2006, 20h26

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