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 :

Manip de fichiers


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 146
    Par défaut Manip de fichiers
    Bonjour à vous,

    Je me pose une question, au niveau de l'écriture dans un fichier.

    Je m'explique : J'ai écris une fonction avec plusieurs arguments, je réalise ensuite quelques tests, puis je souhaiterais écrire dans un fichier , les résultats de mes tests.

    Puis je par exemple, récuperer la valeur d'un de mes arguments pour ensuite l'inclure dans mon fichier grâce à fputs/fputc ?

    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
     
    void affiche(int *tableau, int tailleTableau)
    {
        int i;
     
        for (i = 0 ; i < tailleTableau ; i++)
        {
            printf("%d\n", tableau[i]);
        }
    }
     
    void save_level(char *file_name, int width, int height, int gold_left,...){
    if (gold_left != 0) {
    ....
        }
     
    FILE* fichier = NULL;
     
        	fichier = fopen("image.level", "w");
        	if (fichier != NULL)    {
       	fputs(width,fichier);
       	printf("\n");
       	fputs(height,fichier);
    	printf("\n");
    	fputs(affiche(tab,600),fichier);
     
            fclose(fichier);
    Je ne peux certainement pas faire ça, vu que ça n'a pas l'air hyper logique, mais puis je faire appel à vos connaissances, pour me trouver la fonction qui me le permet ?

    Merci d'avance.

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

    J'ai l'impression que tu veux écrire dans ton fichier ce que tu aurais écrit dans la console.

    Tu peux créer une copie de la fonction affiche qui travaille dans un fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void affiche_fichier(int *tableau, int tailleTableau, FILE *fichier)
    {
        int i;
        if(NULL != fichier) {
            for (i = 0 ; i < tailleTableau ; i++) {
                fprintf(fichier, "%d\n", tableau[i]);
            }
        }
    }
    et de l'intégrer à save_level :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    fichier = fopen("image.level", "w");
        	if (fichier != NULL)    {
            /* /!\ attention, utilisé comme ça, fputs fera n'importe quoi : utiliser fprintf plutôt. */
       	fputs(width,fichier);
            /* /!\ idem */
       	printf("\n");
       	fputs(height,fichier);
    	printf("\n");
    	affiche_fichier(tab,600,fichier);
     
            fclose(fichier);
    Dernière modification par Invité(e) ; 29/04/2010 à 15h01. Motif: erreur dans le code : fputs...

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 146
    Par défaut
    C'est en effet très malin ! J'y avais pas pensé...

    Mais alors, d'après ton code, je peux (j'ai le droit) de mettre le nom d'une variable dans mon fputc/s ? au lieu de juste un caractère ou une string...

    Edit : Je demande parce que quand je compile, il me met un warning :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    warning: passing argument 1 of ‘fputs’ makes pointer from integer without a cast
    /usr/include/stdio.h:662: note: expected ‘const char * __restrict__’ but argument is of type ‘int

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par larchicha Voir le message
    C'est en effet très malin ! J'y avais pas pensé...

    Mais alors, d'après ton code, je peux (j'ai le droit) de mettre le nom d'une variable dans mon fputc/s ? au lieu de juste un caractère ou une string...
    euh, attends, j'avais pas vu l'utilisation de fputs... c'est incorrect, il faut utiliser fprintf plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /*EDIT : manque un f */
       	fprintf(fichier, "%d\n"; width);
       	fprintf(fichier, "%d\n"; height);
    	affiche_fichier(tab,600,fichier);
    Dernière modification par Invité(e) ; 29/04/2010 à 15h29. Motif: confusion printf et fprintf

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 146
    Par défaut
    Merci mon cher Mabu !
    Tu me sauves la journée...

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 146
    Par défaut
    Dans un soucis de perfection, si je veux éviter les warnings du genre :

    Code :

    warning: passing argument 1 of ‘printf’ from incompatible pointer type
    /usr/include/stdio.h:339: note: expected ‘const char * __restrict__’ but argument is of type ‘struct FILE *’

    Je dois caster quelque chose ? (la notion m'échappe quelque peu)

    Merci d'avance.

    PS : Du moins , est-ce dangereux pour la stabilité de laisser les warnings ? ou on s'en tamponne ?

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

Discussions similaires

  1. [Débutant] pb manip dans fichier
    Par ieee dans le forum C++Builder
    Réponses: 3
    Dernier message: 25/01/2014, 01h39
  2. [Manip de fichiers] Fichier illisible ?!
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 13/07/2006, 14h30
  3. [DEBUTANT] Aide manip fichier EXCEL
    Par valal dans le forum Modules
    Réponses: 8
    Dernier message: 05/01/2006, 08h32
  4. Réponses: 2
    Dernier message: 12/08/2005, 22h15
  5. [Manip de fichiers] Fonction retournant des infos
    Par sans_atouts dans le forum C
    Réponses: 3
    Dernier message: 24/07/2002, 14h16

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