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 d'affichage avec printf


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 104
    Points : 62
    Points
    62
    Par défaut problème d'affichage avec printf
    j'ai un grand probleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    char * fonct()
    {...
       char * c;
       printf("%s",c);  //ici s'affiche normalement 
       return c
    }
     
    void main()
    {
       c=fonct()  ;
       printf("%s",c); //  ici  ne s'affiche pas normalement :des caracteres    bizares 
    }

    [ Modéré par BigBoomShakala ] - les règles du forum C++
    Modification du titre - Ajout des balises code
    Merci d'y penser à l'avenir

  2. #2
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char * fonct()
    char* c;
    printf("%s",c); //ici s'affiche normalement
    Ca affiche quoi ? Rien n'est alloué, rien n'est initialisé, le comportement est indéfini.

    Et là le pointeur alloué sur la pile est dépilé : son contenu est perdu -> comportement indéfini.

    Oublie les char* et utilise std::string, parce que là tu vas au devant de grands ennuis
    Les orteils servent à trouver les pieds de chaise et les montants de porte quand il fait noir.

  3. #3
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Citation Envoyé par BertrandA
    Ca affiche quoi ? Rien n'est alloué, rien n'est initialisé, le comportement est indéfini.
    [...]
    Oublie les char* et utilise std::string, parce que là tu vas au devant de grands ennuis


    Je rajouterais que, si ce code était correctement implémenté, ce serait du C et non du C++.

    En C++ on utilise les entrées/sorties standards cin/cout.

    Tout ceci est dans la FAQ



    Enjoy yourself !

  4. #4
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 104
    Points : 62
    Points
    62
    Par défaut difference_string
    Merci pour les reponces.
    j'ai trouve que on a deux types de declarations
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    std::string s;
     
     
    string s;
    Quelle est la difference ?

  5. #5
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 681
    Points
    10 681
    Billets dans le blog
    3

  6. #6
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Si tu alloues dynamiquement "char * c;" dans fonct() cela devrait bien fonctionner !

  7. #7
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 104
    Points : 62
    Points
    62
    Par défaut reponse
    Citation Envoyé par Ti-R
    Si tu alloues dynamiquement "char * c;" dans fonct() cela devrait bien fonctionner !
    [reponse]
    Merci, mais j'ai essaiye de cette facon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    c(char *)malloc(5*sizeof(char))
    et le probleme existe encore
    [/reponse]

    [Pour les balises fermantes il faut placer un "/" avant le mot : [/code] par exemple - netah_25]

  8. #8
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut Re: problème d'affichage avec printf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c(char *)malloc(5*sizeof(char))
    en C++ on utilise new/delete et non pas malloc/free.

    et seulement lorsqu'on est obligé.
    pour le chaînes de caractères on préfèrera std::string.

    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
    #include <string>
    #include <iostream>
     
    using std::string;
    using std::cout;
    using std::endl;
     
    string fonct()
    {
       string uneChaine = "Bonjour";
       cout << uneChaine << endl;
       return uneChaine;
    }
     
    int main()
    {
       string chaine = fonct();
       cout << chaine+" et bienvenue." << endl;
     
       return EXIT_SUCCESS;
    }
    voir FAQ pour la manipulation des strings.


    Enjoy yourself !

  9. #9
    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 : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    J'ai fusionné les sujets, dur de trouver le message original mais je suppose que c'était celui-ci.

    Merci de cliquer que le bouton REPONDRE pour répondre, la prochaine fois.

  10. #10
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Citation Envoyé par Loulou24
    J'ai fusionné les sujets, dur de trouver le message original mais je suppose que c'était celui-ci.

    Merci de cliquer que le bouton REPONDRE pour répondre, la prochaine fois.
    ah ! j'ai une impression de déjà vu

    merci d'y faire attention.



    Enjoy yourself !

  11. #11
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 104
    Points : 62
    Points
    62
    Par défaut renseignement
    vraiment je suis etonne
    a droit on a citet (cad repondre en citant) et c'est ceci que je fais

  12. #12
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 104
    Points : 62
    Points
    62
    Par défaut renseignement
    est ce que de bouton en haut de la page que vous parlez ah! desole

  13. #13
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Oui,

    Ce bouton pour répondre à la suite


    Ce bouton pour créer un nouveau sujet




    Enjoy yourself !

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

Discussions similaires

  1. Problème d'affichage avec le composant JTable
    Par vidocq dans le forum Composants
    Réponses: 2
    Dernier message: 03/04/2006, 11h22
  2. Problème d'affichage avec IE
    Par sheepk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 11/11/2005, 13h00
  3. Réponses: 6
    Dernier message: 19/05/2005, 11h06
  4. Réponses: 6
    Dernier message: 19/10/2004, 13h46
  5. Problème d'affichage avec trace
    Par WriteLN dans le forum Flash
    Réponses: 10
    Dernier message: 22/10/2003, 16h59

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