[Résolu] problème avec mon Code

problème avec mon Code [Résolu] - C - Programmation

Marsh Posté le 26-04-2009 à 17:08:54    

Bonjour, Je vous expose mon problème. Le début de mon code demande à mon utilsisateur de choisir le fichier qu'il veut ouvrir = Ca c'est ok il affiche le bon contenu de mon fichier.
Ensuite je voudrais ouvrir un autre fichier sachant que l'autre est toujours ouvert et afficher son contenu comme pour le premier. Sauf que pour là cela ne fonctionne pas.
Pouvez vous m'aider et me dire pourquoi.
 
Merci de votre aide et voici mon code.
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define TAILLE_MAX 1000
  4. int main(int argc, char *argv[])
  5. {
  6.     char choix[256];
  7.     char chaine [TAILLE_MAX] = "";
  8.     printf("Quel fichier voulez vous ouvrir ?\n" );
  9.     scanf("%s",choix);
  10.   FILE* fichier = NULL;
  11.   fichier = fopen (choix, "r" );
  12.   if (fichier != NULL)
  13.   {
  14.       while (fgets(chaine, TAILLE_MAX, fichier) != NULL) // on lit le fichier tant qu'on ne reçoit pas d'erreur NULL
  15.       {
  16.             printf ("%s", chaine); // on affiche la chaine qu'on vient de lire
  17.       }
  18.       fclose (fichier);
  19.   }
  20. }
  21. void chargedico ()
  22. {
  23.     char chaine [TAILLE_MAX] = "";
  24.     FILE* dico = NULL;
  25.   dico= fopen ("dico.txt", "r" );
  26.   if (dico != NULL)
  27.   {
  28.       while (fgets(chaine, TAILLE_MAX, dico) != NULL) // on lit le fichier tant qu'on ne reçoit pas d'erreur NULL
  29.       {
  30.             printf ("%s", dico); // on affiche la chaine qu'on vient de lire
  31.       }
  32.       fclose (dico);
  33.   }
  34.     return 0;
  35. }

Message cité 1 fois
Message édité par ashlee14 le 08-05-2009 à 09:33:31
Reply

Marsh Posté le 26-04-2009 à 17:08:54   

Reply

Marsh Posté le 26-04-2009 à 17:32:28    

Tu n'appelles pas ta fonction chargedico() dans le main. C'est normal ?

Reply

Marsh Posté le 26-04-2009 à 19:04:54    

Compilé avec -Wall -Wextra

test.c: In function 'main':
test.c:73: warning: control reaches end of non-void function
test.c: At top level:
test.c:57: warning: unused parameter 'argc'
test.c:57: warning: unused parameter 'argv'
test.c: In function 'chargedico':
test.c:83: warning: format '%s' expects type 'char *', but argument 2 has type 'struct FILE *'
test.c:87: warning: 'return' with a value, in function returning void


---------------
You get so used to things the way they are. And I've always been alone. I guess that makes me lonely.
Reply

Marsh Posté le 26-04-2009 à 21:15:55    

Qu'est ce que cela signifie ton "compilage"

Reply

Marsh Posté le 26-04-2009 à 21:17:26    

ashlee14 a écrit :

Qu'est ce que cela signifie ton "compilage"


 
N'espère pas faire du C si tu ne sais meme pas ca...


---------------
Hobby eien /人◕ ‿‿ ◕人\
Reply

Marsh Posté le 27-04-2009 à 14:34:44    

La compilation (et pas compilage  :pfff: ) avec -Wall -Wextra permet d'afficher plus de warings/erreurs que sans ses options.
 
Après tu lit le reste du post et tu voit que :
- ton int main ne retourne rien alors que ton void chargedico (qui accessoirement n'est jamais utilisé) retourne un int ... (c'est pas dramatique mais pas terrible)
- ton printf de chargedico est aussi faux, tu essaye d'afficher une FILE* au lieu d'un char*. Essaye avec "chaine" au lieu de "dico"
 
Et dans tes commentaire => NULL ne veut pas dire qu'il y à une erreur   :non:  

Reply

Marsh Posté le 27-04-2009 à 15:33:43    

ashlee14 a écrit :

Qu'est ce que cela signifie ton "compilage"


 
Je tiens à m'excuser en son nom pour ce néologisme barbare :o


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
Reply

Marsh Posté le 28-04-2009 à 21:17:42    

Je suis navré pour le mot que j'ai employé. Mais même avec vos explications je n'arrive pas à résoudre le problème pouvez vous s'il vous plait me montrer comment faire.  
Merci

Reply

Marsh Posté le 29-04-2009 à 00:41:34    

Pourtant, tout a été dit. Ta fonction "chargeDico" n'est jamais appelée.

Reply

Marsh Posté le 07-05-2009 à 10:12:18    

ashlee14 a écrit :

Bonjour, Je vous expose mon problème. Le début de mon code demande à mon utilsisateur de choisir le fichier qu'il veut ouvrir = Ca c'est ok il affiche le bon contenu de mon fichier.
Ensuite je voudrais ouvrir un autre fichier sachant que l'autre est toujours ouvert et afficher son contenu comme pour le premier. Sauf que pour là cela ne fonctionne pas.


Ceci fonctionne :

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define TAILLE_MAX 1000
  4. int main (void)
  5. {
  6.    char choix[256];
  7.    char chaine[TAILLE_MAX] = "";
  8.    printf ("Quel fichier voulez vous ouvrir ?\n" );
  9.    scanf ("%s", choix);
  10.    FILE *fichier = NULL;
  11.    fichier = fopen (choix, "r" );
  12.    if (fichier != NULL)
  13.    {
  14.       /* on lit le fichier tant qu'on ne reçoit pas d'erreur NULL */
  15.       while (fgets (chaine, TAILLE_MAX, fichier) != NULL)
  16.       {
  17.          /* on affiche la chaine qu'on vient de lire */
  18.          printf ("%s", chaine);
  19.       }
  20.       fclose (fichier);
  21.    }
  22.    return 0;
  23. }


Je ne vois pas bien ce que tu cherches à faire...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed