Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C]faire réagir une chaîne au caractère ' '

le caractère [espace], hein >_>

Sujet résolu
    25 février 2006 à 17:55:58

    En ce moment j'essaie de faire un programme qui lit le nom d'une ville lorsqu'on y rentre l'ID, et j'ai réussi à moitié. je m'explique. Avec un ID de 4, je suis censé recevoir la sortie:
    Alhafra

    qui est la ville correspondant au champ n°4:

    Citation : villes.txt

    0 Daila
    1 Kandor
    2 Dekhan
    3 Madra
    4 Alhafra
    5 Garoh
    6 Rochair

    !=[fin du fichier]=!


    Seulement, je lis la ligne entière (la 4ème en l'occurence), ce qui m'affiche
    4 Alhafra

    Et je veux virer ce bête '4 ' au début de la ligne n__n

    J'ai pensé à faire une chaine tampon n°1, qui stocke la ligne:
    4 Alhafra
    puis ensuite une chaine n°2, qui commencera à lire après l'espace. J'ai essayé un code, mais qui n'a aucun intérêt, est très sale, ne fonctionne pas.

    Pour l'instant, voici ma fonction AfficherVille:
    void AfficherVille(int id, FILE* F_Fichier)
    {
        int i, j;
        char chaine1[20], tampon;
        rewind(F_Fichier);
        for(i = 0; i < id; i++)
        {
            do
            {
                tampon = fgetc(F_Fichier);
            }while(tampon != '\n');
        }
        fgets(chaine1, 20, F_Fichier);
        printf("* la ville n.%d est:\n\t%s", id, chaine1);
        rewind(F_Fichier);
    }


    Avis aux intaygristes: ne faites pas attentions à la taille de mon tableau, je compte optimiser cela plus tard à l'aide de malloc() >_>
    • Partager sur Facebook
    • Partager sur Twitter
      25 février 2006 à 18:00:33

      euh, un fseek(F_Fichier, 2, SEEK_CUR); avant le fgets(chaine1, 20, F_Fichier); doit suffire non?
      Enfin c'est pas trop modulaire, mais ça marche :D
      • Partager sur Facebook
      • Partager sur Twitter
        25 février 2006 à 18:16:31

        Là tu me dis d'avancer le curseur de deux "cases", or ce n'est pas ce que j'ai dit:

        Citation : V1944

        qui commencera à lire après l'espace.


        Car je pense que nom index dépassera 10 villes facilement ;)
        • Partager sur Facebook
        • Partager sur Twitter
          25 février 2006 à 18:20:49

          BA fgets ne lit qu'un ligne à la fois...

          Avec un for, tu va vite régler le problème.
          • Partager sur Facebook
          • Partager sur Twitter
            25 février 2006 à 18:22:58

            j'ai pas trop compris ton problème mais pour virer le 4 et l'espace tu pourrais essayer :

            char chaine2[20];
            strcpy(chaine2, &chaine1[2]);


            edit : sinon pourquoi utiliser un fichier alors qu'une tableaux à 2dimensions suffit :
                int i;
                char ville[7][20] = {"Daila", "Kandor", "Dekhan", "Madra", "Alhafra", "Garoh", "Rochair "};
                printf("Ecrivez l'ID : ");
                scanf("%d", &i);
                printf("%s", ville[i]);

            c'est beaucoup plus simple
            • Partager sur Facebook
            • Partager sur Twitter
              25 février 2006 à 18:26:27

              strchr (char* chaine, char c)

              strchr te renvoie l'adresse du premier caractère c trouvé dans chaine
              Ex :

              char* chaine = "Salut les amis !";
              char* ptr = strchr (chaine,' ');
              printf("%s",ptr);
              // affichera " les amis !"

              • Partager sur Facebook
              • Partager sur Twitter

              [C]faire réagir une chaîne au caractère ' '

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown