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 avec le nom du fichier créé


Sujet :

C++

  1. #1
    En attente de confirmation mail
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 81
    Points : 68
    Points
    68
    Par défaut Problème avec le nom du fichier créé
    Bonjour,

    J'ai créé une fonction, qui est membre d'une classe, qui permet d'enregistrer certains paramètres de l'objet dans un fichier, l'enregistrement des informations dans le fichier se passe sans problème, mais le nom du fichier, qui est entré manuellement par l'utilisateur, ne passe pas. C'est censé créer un fichier .txt et non seulement le fichier créé n'est pas à ce format, mais en plus son nom est à chaque fois du genre: ÌÌÌÌÌÌÌÌÌ×ú-

    Voici le code de la fonction:
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    void graphe::EnregistreGraphe()
    {
    	int n=aps[0];
    	int m=fs[0];
     
    	char* NomFichier;
    	char name;
     
    	cout<<"Entrez le nom du fichier: ";
    	cin>>nom;
     
    	NomFichier=&name;
     
    	ofstream fichier(NomFichier);
     
    	if(fichier.is_open())
    	{
    		char orientation;
    		if(oriente==1)
    			fichier<<"o"<<endl;
    		else
    			fichier<<"no"<<endl;
     
    		/* On enregistre fs */
    		string str="";
    		for(int i=0; i<=m; i++)
    		{
    			stringstream ss;
    			ss << fs[i];
     
    			str += ss.str();
    			if(i!=m)
    				str+=";";
    		}
     
    		fichier<<str<<endl;
     
    		/* On enregistre aps */
    		str="";
    		for(int i=0; i<=n; i++)
    		{
    			stringstream ss;
    			ss << aps[i];
     
    			str += ss.str();
    			if(i!=n)
    				str+=";";
    		}
     
    		fichier<<str<<endl;
     
    		/* On enregistre le tableau valarc si le graphe est valué */
    		str="";
    		if(value==1)
    		{
    			for(int i=1; i<=n; i++)
    			{
     
    				for(int j=1; j<=n; j++)
    				{
    					stringstream ss;
    					ss << valarc[i][j];
     
    					str += ss.str();
    					if(j!=n)
    						str+=";";
    				}
    				fichier<<str<<endl;
    				str="";
    			}
    		}
    		else
    		{
    			fichier<<str<<endl;
    		}
     
    		/* On enregistre le nom des sommets s */
    		str="";
    		if(nom==1)
    		{
    			for(int i=1; i<=n; i++)
    			{
    				str += sommets[i];
    				if(i!=n)
    					str+=";";
    			}
    			fichier<<str;
    		}
    		else
    			fichier<<str;
    	}
    	else
    		cout<< "Fichier non ouvert";
     
    	fichier.close();
    }
    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    Billets dans le blog
    4
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    char* NomFichier;
    	char name;
     
    	cout<<"Entrez le nom du fichier: ";
    	cin>>nom;
     
    	NomFichier=&name;
     
    	ofstream fichier(NomFichier);
    Inutile de regarder plus loin, ce que tu fais là est clairement mauvais.

    ofstream veut une "null-terminated string", pas n'importe quel pointeur vers char. Ce sont 2 trucs totalement différents.

    En plus, d'où sort le nom utilisé dans le cin ?
    Et pourquoi c'est pas lui qui est utilisé pour ouvrir le fichier ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Bousk a tout dit sur l'origine de l'erreur, je rajouterais ceci

    Citation Envoyé par seb68270
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    string str="";
    for(int i=0; i<=m; i++)
    {
        stringstream ss;
        ss << fs[i];
     
        str += ss.str();
        if(i!=m)
            str+=";";
    }
    fichier<<str<<endl;
    Il est inutile de s'embêter avec un std::string et std::stringstream ici, utilise directement ton std::ofstream fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for(int i=0; i<=m; i++)
    {
        fichier << fs[i];
        if(i!=m)
            fichier << ';';
    }
    fichier << endl;
    (idem les autres boucles construites ainsi)

  4. #4
    En attente de confirmation mail
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 81
    Points : 68
    Points
    68
    Par défaut
    Effectivement Merci Bousk, grosse erreur de ma part. En fait j'avais créé une variable char qui s'appelle name car je pensais qu'ostream prenait un char*, d'où la variable NomFichier, et il fallait donc à ce moment-là que je fasse un cin sur le name pour ensuite faire pointe NomFichier dessus, enfin bref je me suis cassé la tête pour rien.

    @Winjerome: J'ai fait ta modification, histoire d'avoir un code plus propre et plus "logique".

    Un grand merci à vous deux.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/02/2015, 13h54
  2. Réponses: 1
    Dernier message: 10/06/2011, 11h07
  3. problème avec le nom du fichier script
    Par bzb23 dans le forum Linux
    Réponses: 7
    Dernier message: 10/03/2011, 14h40
  4. problème avec le nom d'un fichier
    Par mongilotti dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 01/10/2010, 16h04
  5. problème avec le nom d'un fichier
    Par mongilotti dans le forum Administration système
    Réponses: 2
    Dernier message: 30/09/2010, 22h21

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