Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonction ENTER

    12 avril 2006 à 19:08:49

    :) Bonjour

    J'ai essayer de faire une fonction enter dans un fichier .txt . Hors, cette fonction en fonctionne pas, et en dépit de mes efforts les plus sincères, je n'ai pu comprendre le problème ... :(

    Voici comment fonctionne cette fonction :


    /* **************** Fonctionnement de la fonction enter ************** */

    /* La fonction va pousser tous les mots ou caractères d'un texte d'une ligne
    vers le bas.
    Pour ce faire, elle fonctionnera comme ceci :

    1-> Elle lit la 1ère phrase et la copie dans une variable
    2-> Elle supprimer la phrase et copie celle d'en dessous dans une autre variable
    3-> Elle copie la 1ère phrase dans la 2ème et lit la 3ème
    4-> Elle copie la 2ème phrase dans la 3ème et lit la 4ème

    ----> Cette fonction aura une boucle jusqu'en fin de fichier depuis le point 3.

    Une fois ceci fait, elle reviendra au début du fichier
    /* *************************************************************** */



    Et voici le code de la fonction :


    #define MAX 1000
    /* Les variables*/
    char phrase[]="",phrase2[]="";
    long positionIn = 0, i= 0;

    /*Lecture de la position dans le fichier*/

    positionIn = ftell(fichier);

    /*Lecture de la 1ère pharse*/
    fgets(phrase,MAX,fichier);

    /*Retour au début de la 1ère phrase*/
    fseek(fichier,-(strlen(phrase)),SEEK_CUR);
    while ( !feof(fichier)) /* Tant qu'on est pas à la fin */
    {
        /*Les caractères sont effacés jusqu'au '\n' */
        while (getchar() != '\n') ;

        /*Lecture de la phrase suivante*/
        fgets(phrase2,MAX,fichier);

        /*Retour au début de la phrase*/
        fseek(fichier,-(strlen(phrase2)),SEEK_CUR);

        /*La phrase précédente est notée*/
        fprintf(fichier,"%s",phrase);

        /*Les caractères sont effacés jusqu'au \n*/
        while (getchar() != '\n') ;

        /*Le phrase suivante est lue*/
        fgets(phrase,MAX,fichier);

        /*Retour au début de cette phrase*/
        fseek(fichier,-(strlen(phrase)),SEEK_CUR);

        /*La phrase précédente est notée*/
        fprintf(fichier,"%s",phrase2);

    /*Fin de la boucle*/
    };

    /* je remonte jusqu'au point de départ :*/

    rewind(fichier);
    fseek(fichier,positionIn + 1,SEEK_CUR);
    return fichier;
    }


    • Partager sur Facebook
    • Partager sur Twitter
      12 avril 2006 à 19:13:56

      Jai pas tout lu mais au début quand tu initialise tes "tableaux" de char tu fait:
      char phrase[] = ""



      Le programme fixe donc automatiquement la taille du tableau avec ce que tu met dedans. Autrement dit: rien donc tu as un tableau de taille 0 (si tu ne comprend pas tu peut revoir le chapitre sur les chaines de caractère ;) ).

      Sinon le reste à l'air bien mais jai jeté un coup d'oeil rapide :) .
      • Partager sur Facebook
      • Partager sur Twitter
        12 avril 2006 à 19:15:44

        :D ne t'en fait pas, même avec mes tableaux initialiser correctement, la fonction n'a jamais fonctionné ...
        • Partager sur Facebook
        • Partager sur Twitter
          12 avril 2006 à 19:16:02

          Salut !

          C'est peut-être parce que tu as mis un ; à la fin de ta boucle while.
          • Partager sur Facebook
          • Partager sur Twitter
            12 avril 2006 à 19:30:40

            :p en effet, ce point virgule est de trop

            :-° mais c'est loin d'être suffisant ... Cette fonction va me servir dans mon pendu, le fichier est le suivant :

            Datas du Pendu
            Albert
            Mot Trouve :
            Mot Non-Trouve :
            FIN ==> Le fin me sert de point de repère


            Et le voici après la fonction :


            Datas du Pendu
            Albert
            Mot Trouve :
            Mot Non-Trouve :
            I
            IN


            Selon mon code source, le mot secret (de mon pendu donc :) ) devrait être noter juste en dessous de "Mot Non-Trouve : " .. et le mot "fin" juste en dessous ^^


            • Partager sur Facebook
            • Partager sur Twitter

            Fonction ENTER

            × 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