Votre question

Fscanf + while

Tags :
  • Programmation
Dernière réponse : dans Programmation
28 Décembre 2009 01:27:06

Bonjour.
J'ai plusieurs fichiers. Le fichier principal contient des noms des listes (des fichiers). Tous les autres fichiers sont nommés par exemple "liste_1.txt" ... "liste_n.txt". Chaque fichier contient plusieurs mots (un mot par ligne). Le but c'est d'afficher d'abord le nom de la 1ère liste et ts les mots qu'elle contient et ensuite la meme chose pour toutes les autres lstes.
Par exemle: supposons que le fichier principal primary_f.txt contient 2 noms de fichiers: "Obama"et "Sarkozy". Le fichier "Obama.txt" contient "Clinton, Levinsky" et "Washington" (un seul mot par ligne). Et "Sarkozy.txt" contient "Bruni" et "HADOPI".... A la fin je veux qu'il m'affiche:
  1. Obama
  2. Clinton
  3. Levinsky
  4. Washington
  5. Sarkozy
  6. Bruni
  7. HADOPI


Voici mon code:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX_LEN 300
  4.  
  5. int afficher()
  6. {
  7. FILE* fichier = NULL;
  8. char chaine[MAX_LEN];
  9. char chaine1[MAX_LEN];
  10. fichier = fopen("primary_f.txt", "r");
  11. while (fscanf(fichier," %[^\n]s",chaine)!= EOF)
  12. {
  13. printf("%s\n",chaine);
  14. fclose(fichier);
  15. sprintf(chaine1,"%s.txt",chaine);
  16. fichier=fopen(chaine1,"r");
  17. while (fscanf(fichier," %[^\n]s",chaine1)!=EOF)
  18. {
  19. printf(" %s\n\n\n",chaine1);
  20. };
  21. fclose(fichier);
  22. fichier = fopen("primary_f.txt", "r");
  23. };
  24. fclose(fichier);
  25. return(0);
  26. }

Et il marche pas (facile à tester).Quelqu'un peut me le modifier s'il vous plaît?
Merci et bonne journée

Autres pages sur : fscanf while

a b L Programmation
29 Décembre 2009 20:08:47

fscanf ne prend pas d'expression régulière. Tu peux enlever le [^\n] et faire l'analyse par toi-même.
m
0
l
29 Décembre 2009 22:27:45

Merci mais je l'ai déjà fait....pour fscanf il faut [^\n] car c'est pas un mot mais une phrase en fait...
Voici le code qui marche parfaitement
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX_LEN 300
  4.  
  5.  
  6. int afficher()
  7. {
  8. FILE* fichier;
  9. FILE* fichier1; //pour les noms
  10. char chaine[MAX_LEN];
  11. char chaine1[MAX_LEN];
  12. if (fopen("primary_f.txt","r")==NULL)
  13. {
  14. printf("C'est vide.Ajoutez d'abord une todo-liste \n");
  15. return(0);
  16. };
  17. fichier=fopen("primary_f.txt", "r");
  18. while ((fscanf(fichier," %[^\n]s",chaine))!=EOF)
  19. {
  20. printf("%s\n\n",chaine);
  21. sprintf(chaine1,"%s.txt",chaine);
  22. fichier1=fopen(chaine1,"r");
  23. while ((fscanf(fichier1," %[^\n]s",chaine1))!=EOF)
  24. {
  25. printf("...%s\n\n",chaine1);
  26. };
  27. };
  28. fclose(fichier);
  29. fclose(fichier1);
  30. return(0);
  31. }
m
0
l
a b L Programmation
30 Décembre 2009 17:26:05

Ah oui effectivement, je crois que j'oublie toujours cette fonctionnalité comme je n'utilise jamais cette fonction. :) 
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS