Résultats de 1 à 3 sur 3

Sujet : lseek read write un fichier

  1. #1
    Membre MP
    Inscrit
    août 2013
    Messages
    4

    lseek read write un fichier

    salut
    je veux faire un programme ,qui écrit un nombre de variable de type enregistrement dans un fichier et apres je veux lire l\'enregistrement numero 2 par exemple en utilisant lseek, pour cela j\'ai créé un fichier note.h pour definir les variables et les fonction du programme. Voila ce que j\'ai fait
    Code:
    struct notes/*deffinition des variables*/
    { int note1;
     int note2;
    }p;
    void ecrit(struct notes p) /*fonction d\'ecriture*/
    {
    int n;
    n = open(\"registre\",O_WRONLY|O_APPEND);
    write(n,p,sizeof(struct notes));
    close(n);
    }
    void lire(int a)/*fonction de lecture*/
    {
            int n;
            n = open(\"registre\",O_RDWR);
            lseek(n,a*sizeof(struct notes),0);
            read(n,&p,sizeof(struct notes));
            printf(\"la note demmande est\\n\");
            printf(\"note1 = %d note2 = %d \\n\",p.note1,p.note2);
    close(n);
    }
    donc il y a deux fonctions, une pour lire et l\'autre pour écrire.
    Dans mon programme principal j\'ai fait le code suivant
    Code:
    #include<stdio.h>
    #include<fcntl.h>
    #include\"note.h\"
    main()
    {
            int n,i;
            printf(\"donner nombres des etudiants\\n\");
            scanf(\"%d\",&n);
            for(i=1;i<=n;i++)
            {
                    printf(\"donner 1er note\\n\");
                    scanf(\"%d\",&p.note1);
                    printf(\"donner 2eme note\\n\");
                    scanf(\"%d\",&p.note2);
                    ecrit(p);
    
            }
    
            printf(\"donner l\'ordre du note\\n\");
                    scanf(\"%d\",&i);
                            lire(i);
                                    return 0;
    }
    danc le fichier dans je veux y écrire \"registre \" dans le rep courant
    dans l\'execution tout marche a part la lecture
    je vous remercie à l\'avance pour vos remerques et suggestions.
    merci.

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    1 012
    change le paramètre de la fonction lire() de int a, vers int *a. pour travailler sur une adresse, enfin je pense.

    je crois que ça devrait marcher alors mais je suis pas sur, sinon tu declares le \'n\' également en int * et ça devrait marcher je pense

    bonne chance
    Grégory S.

    eVias Web & Software Solutions.

    Développement Web et logiciel en tout genre et Open Source.

    FOSDEM 2008. Venez -y nombreux !

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    4
    salut;
    merci de votre reponce;
    il y avait un petit probleme dans le programme ,dans la fonction write() j\'ai utilise
    write(n,p,sizeof(struct notes));
    mais la façon correcte c :
    Code:
    write(n,&p,sizeof(struct notes));
    maintenant ca marche bien,merci
    soyez patients avec les debutants en C comme moi,a+

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé