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 les pointeurs


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Par défaut Problème avec les pointeurs
    Bonjour à tous,

    Une petite question :
    lorsque je veux nommer un fichier et que je le fait avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf(output_file,"Fichier.ppm");
    Il se trouve que mon fichier qui en ressort a le nom suivant 'Fichier.ppm0'.
    Ce n'est pas un gros probleme en soi, mais il se trouve que mon ordinateur n'affiche pas les fichiers avec une extension '.ppm0' .
    D'ou mon probleme (Je sort beacoup d'image lors d'un calcul)

    Je pense qu'il se passe quelque chose avec le dernier charactere de la chaine de charactere (/0). Mias je n'arrive pas à mettre la main sur la petite bete...

    Quelqu'un aurait il une idée d'ou se cache l'erreur ?

  2. #2
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf(output_file,"Fichier.ppm\0");
    ça marche bien?

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Une chaine littérale est toujours terminée par '\0' de toute façon, ce ne serait pas une chaine sinon.

  4. #4
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par latitude38 Voir le message
    lorsque je veux nommer un fichier et que je le fait avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf(output_file,"Fichier.ppm");
    Il se trouve que mon fichier qui en ressort a le nom suivant 'Fichier.ppm0'.
    Ce n'est pas un gros probleme en soi, mais il se trouve que mon ordinateur n'affiche pas les fichiers avec une extension '.ppm0' .
    Comment est déclaré output_file ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Par défaut
    Salut,

    Non, lorsque je met '\0' à la fin de mon nom de fichier, cela n'améliore rien.

    'outputfile' est déclaré comme ceci :

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Le mieux serait quand même de nous montrer le code qui pose problème.

  7. #7
    Membre éclairé Avatar de mikhailo
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 78
    Par défaut
    Essaie peut-être différemment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char* output_file = (char*)malloc((strlen("Fichier.ppm")+1) * sizeof(char));
    ...
    strcpy(output_file, "Fichier.ppm");
    Sans oublier le free(output_file) à la fin du programme.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Par défaut
    C'est difficile de vous montrer le code, car en fait il est trèèèèèèèèèèèèèèès long !
    C'est pour cela que je ne vous en montre qu'une partie.

    D'ailleurs en fait, le problème est un peu différents :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          sprintf(output_file,"%s.%05d.ppm ",E->control.data_file,file_number)
    avec qui dépend du fichier entrée... donc on ne connait pas à priori sa longueur et je ne peux pas allouer exactement le nombre de charactere (cf commentaire plus haut)

    Par contre, j'ai remarqué qqch de bizarre tout à l'heure :
    lorsque je rentre un espace après ppm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          sprintf(output_file,"Fichier.ppm  ")
    il me sort des fichier avec une extension en '.ppm 0' !!

    Vous n'avez jamais rencontré ce problème de nom de fichier ?

  9. #9
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Même avec un fichier très long, isoler une partie à problème n'est pas insurmontable. D'ailleurs, je ne vois pas de problème. Mais avec le peu d'infos que tu donnes, c'est dur...

    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
    #include <stdio.h>
     
    int main(void)
    {
        char output_file[255];
        size_t file_number = 0;
     
        while(file_number < 12)
        {
            //sprintf(output_file,"%s.%05d.ppm ",E->control.data_file,file_number)
            sprintf(output_file,"%s.%05d.ppm ","filename",file_number);
            puts(output_file);
            file_number++;
        }
        return 0;
    }
    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
    filename.00000.ppm
    filename.00001.ppm
    filename.00002.ppm
    filename.00003.ppm
    filename.00004.ppm
    filename.00005.ppm
    filename.00006.ppm
    filename.00007.ppm
    filename.00008.ppm
    filename.00009.ppm
    filename.00010.ppm
    filename.00011.ppm
     
    Process returned 0 (0x0)   execution time : 0.015 s
    Press any key to continue.

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

Discussions similaires

  1. Problème avec les pointeurs intelligents de boost.
    Par Le Barde dans le forum Boost
    Réponses: 2
    Dernier message: 05/09/2007, 12h47
  2. Petit problème avec les pointeurs et variable
    Par mitherkiller dans le forum C
    Réponses: 5
    Dernier message: 09/03/2007, 22h05
  3. problème avec les pointeurs en c
    Par dialloma dans le forum C
    Réponses: 14
    Dernier message: 01/01/2007, 21h22
  4. probléme avec les pointeurs
    Par killer_instinct dans le forum C++
    Réponses: 6
    Dernier message: 11/12/2006, 11h37
  5. [TTreeView] Problème avec les pointeurs d'objet
    Par BlackWood dans le forum Composants VCL
    Réponses: 2
    Dernier message: 02/07/2004, 14h31

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