Se connecter avec
S'enregistrer | Connectez-vous

Fscanf + while

Dernière réponse : dans Programmation

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

Lassé par la pub ? Créez un compte

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. }
Lassé par la pub ? Créez un compte
Tom's guide dans le monde