Linux

Résolu
mimi_lindy -  
mimi_lynda Messages postés 32 Statut Membre -
Bonjour,voulez vous maider ds cet exo svp
exo:
on desire traiter des fichiers linux ayant la structure suivante:
-une zone d'entete qui consiste en un entier de votre choix
-une suite d'objets ayant la structure suivante:-nom
-prenom
-age
les operations a realiser sur de tels fichiers sont:

*ouverture d'un fichier existant et affichage des enregistrement.
*une fonction qui donne le nombre d'enregistrements.
*une fonction qui donne la valeur du i=eme enregistrement.
*une fonction qui ajoute un nouvel enregistrement en fin de fichier .
*une fonction qui modifie le i=eme enregistrement .
*une fonction qui affiche en cas d'erreue dans un appel systeme le numéro et le message correspondant à l'erreur .
merci d'avance de mavoir aidé!
Configuration: Windows XP
Internet Explorer 7.0

35 réponses

  • 1
  • 2
Résumé de la discussion

Le sujet porte sur le traitement de fichiers avec une zone d'entête entière et une suite d'enregistrements nom, prénom et age, incluant ouverture, affichage, comptage et accès au i-ème enregistrement. Plusieurs réponses évoquent une approche en C sur Linux avec des structures binaires et des appels système, puis l'affichage ou l'écriture des enregistrements et la gestion des erreurs. D'autres proposent des variantes comme l'utilisation de fichiers texte plutôt que binaires, ou des exercices complémentaires sur deux processus et la synchronisation par signaux ou par pipe. En pratique, des exemples de code montrent des fichiers binaires avec en-tête et enregistrements, et soulèvent des questions sur l'environnement Windows et Linux et sur le choix des appels d'ouverture et de lecture.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    De rien !

    Mais quel est exactement ton problème technique ?

    Dal
    0
  2. mimi_lindy
     
    re,
    je veux le code'les commandes linux'qui me permettent de creer ce fichier ayant la structure demandée,
    et les fonctions linux aussi (demandées) pour pouvoir manipuler ce fichier.
    si vous metrisez linux vous pouvez comprendre de quoi il s'agit.
    si vous pouvez m'aidez n'hesiter pas car j'en ai besoin.
    merci une 2eme fois
    0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Commence par nous exposer ce que tu as déjà fait, ensuite on verra ce que l'on peut pour toi ;-))
    0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    ce n'est pas un exo en langage C par hasard?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mimi_lynda Messages postés 32 Statut Membre
     
    non,jai rien fait car,
    j'ai peu de connaissance sur linux ,je sais juste crrer des fichier simples a travers le c++
    mais ca c'est du pur linux et moi je connais pas l'environement linux,mais je dois faire ce travail .
    0
  7. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    et le nombre entier qui est au début de fichier ce n'est pas par hasard le nombre d'enregistrements ?!
    0
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    je dois faire ce travail .
    Dans quel but ?
    0
  9. mimi_lynda Messages postés 32 Statut Membre
     
    oui, exactement cest un exo en langage c,et vu que je ne metrise pas linux et c ou c++ jai besoin d'aide!!
    merci lami20j
    0
  10. bob031 Messages postés 8228 Statut Membre 473
     
    bonjour,

    j'ai du mal à comprendre la logique :

    une zone d'entete
    à quoi sert-elle dans l'exercice ???

    affichage des enregistrement.

    enregistrements de quoi ?

    -une suite d'objets ayant la structure suivante:
    -nom
    -prenom
    -age </ital>

    on peut supposer y mettre ce qu'on veut d'autre .... :-)

    une fonction qui affiche en cas d'erreue dans un appel systeme le numéro et le message correspondant à l'erreur .

    pourquoi faire ?

    décidemment je comprend rien à rien ...trop dur pour moi l'informatique !
    0
  11. mimi_lynda Messages postés 32 Statut Membre
     
    bsr,je veux qlq'un qui metrise le c (c++) sous linux pour m'aider a faire un exo
    merci davance !
    0
  12. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    voici un début
    Le code permet de créer des enregistrements et ensuite d'afficher le contenu du fichier

    tu crées d'abord un fichier vide avec la commande
    touch personne.dat


    ensuite tu compile ce p'tit code et tu l'exécute
    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct Personne_{
    	char nom[100];
    	char prenom[100];
    	int age;
    }Personne;
    
    void AjouterEnregistrement(int *nb);
    void Afficher(int *nb);
    
    int main()
    {
      int nb;
      char choix = 'o';
      while(choix == 'o'){
        AjouterEnregistrement(&nb);
        getchar();
        printf("Voulez vous continuer o/n ? ");
        choix = getchar();
      }
      Afficher(&nb);
      return 0;
    }
    
    void AjouterEnregistrement(int *nb){
      FILE *fb;
      Personne nouveau;
    
      if(NULL ==(fb=fopen("personne.dat","r+b")))
        exit(EXIT_FAILURE);
      if(fread(nb,sizeof(int),1,fb)==0)
        *nb = 0;
      printf("--- Ajouter une nouvelle personne ---\n");
      printf("Nom : ");
      scanf("%s",nouveau.nom);
      getchar();
      printf("Prenom : ");
      scanf("%s",nouveau.prenom);
      getchar();
      printf("Age : ");
      scanf("%d",&nouveau.age);
      *nb = *nb +1;
      fseek(fb,0,SEEK_SET);
      fwrite(nb,sizeof(int),1,fb);
      fseek(fb,0,SEEK_END);
      fwrite(nouveau.nom,100,1,fb);
      fwrite(nouveau.prenom,100,1,fb);
      fwrite(&nouveau.age,sizeof(int),1,fb);
      fclose(fb);
    }
    
    void Afficher(int *nb){
      FILE *fb;
      int i;
      Personne nouveau;
    
      if(NULL ==(fb=fopen("personne.dat","rb")))
        exit(EXIT_FAILURE);
      fread(nb,sizeof(int),1,fb);
      printf("Il y a %d enregistrements\n",*nb);
      for(i=0;i<*nb;++i){
        fread(nouveau.nom,100,1,fb);
        fread(nouveau.prenom,100,1,fb);
        fread(&nouveau.age,sizeof(int),1,fb);
        
        printf("%d. Nom : %s, Prénom : %s , Age : %d\n",
    		  i+1,nouveau.nom,nouveau.prenom, nouveau.age);
      }
      fclose(fb);
    }
    
    0
    1. mimi_lynda Messages postés 32 Statut Membre
       
      bsr lami20,
      je pourrais avoir des réponses a mes dèrnieres questions stp? car j'en ai vraiment besoin
      merci
      0
  13. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    voici l'exécution
    lami20j@debserv:~/trash/c_exercices$ ./a.out
    --- Ajouter une nouvelle personne ---
    Nom : AAA
    Prenom : aaa
    Age : 10
    Voulez vous continuer o/n ? o
    --- Ajouter une nouvelle personne ---
    Nom : BBB
    Prenom : bbb
    Age : 20
    Voulez vous continuer o/n ? o
    --- Ajouter une nouvelle personne ---
    Nom : CCC
    Prenom : ccc
    Age : 30
    Voulez vous continuer o/n ? n
    Il y a 3 enregistrements
    1. Nom : AAA, Prénom : aaa , Age : 10
    2. Nom : BBB, Prénom : bbb , Age : 20
    3. Nom : CCC, Prénom : ccc , Age : 30
    lami20j@debserv:~/trash/c_exercices$
    
    0
  14. mimi_lynda Messages postés 32 Statut Membre
     
    merci pour ce code,
    le nom du fichier c'est 'personne'?et ce code repond a quellle partie de l'exo?

    si je px avoir votre msn pour discuter de la solution ca serait bien
    merci
    0
  15. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    le nom de fichier est personne.dat

    le code traite
    *ouverture d'un fichier existant et affichage des enregistrement.
    *une fonction qui donne le nombre d'enregistrements.
    *une fonction qui ajoute un nouvel enregistrement en fin de fichier .


    le nombre d'enregistrement je l'affiche avec la fonction d'affichage
    0
  16. mimi_lynda Messages postés 32 Statut Membre
     
    ya -t-il la commande pour le nombre entier a lentete? qui n'est pas bien sur le nombre d'enregistrements,c'est un nombre entier quelquonque .
    0
  17. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    un nombre entier quelconque ne sers à rien

    donc le nombre entier sera le nombre des enregistrements
    à chaque nouveau enregistrement le numéro sera incrément, ce que je trouve assez logique
    comme ça tu ne sera pas obliger de compter à chaque fois que tu veux le nombre d'enregistrements

    et voici une fonction pour le nombre d'enregistrements qui en fait lit le nombre entier en entête de fichier

    int NombreEnregistrements(){
      FILE *fb;
      int nb;
      if(NULL == (fb = fopen("personne.dat","rb")))
        return -1;
      fread(&nb,sizeof(int),1,fb);
      fclose(fb);
      return nb;
    }

    0
  18. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    pour
    *une fonction qui affiche en cas d'erreue dans un appel systeme le numéro et le message correspondant à l'erreur .


    tu dois utiliser perror
    0
  19. Grunt Messages postés 2845 Statut Contributeur 301
     
    Normalement, si ton code ne fait pas appel à des librairies disponibles que sous Windows, que tu sois sous Linux ou sous Windows ne change strictement rien : le C, c'est du C !
    0
  20. mimi_lynda Messages postés 32 Statut Membre
     
    voici l'enoncé complet de l'exo:
    Bonjour,voulez vous maider ds cet exo svp
    exo:
    on desire traiter des fichiers linux ayant la structure suivante:
    -une zone d'entete qui consiste en un entier de votre choix
    -une suite d'objets ayant la structure suivante:-nom
    -prenom
    -age
    les operations a realiser sur de tels fichiers sont:

    *ouverture d'un fichier existant et affichage des enregistrement.
    *une fonction qui donne le nombre d'enregistrements.
    *une fonction qui donne la valeur du i=eme enregistrement.
    *une fonction qui ajoute un nouvel enregistrement en fin de fichier .
    *une fonction qui modifie le i=eme enregistrement .
    *une fonction qui affiche en cas d'erreue dans un appel systeme le numéro et le message correspondant à l'erreur .

    -écrire en c++(c) les classes (les structures) nécessaires .
    -ajouter une fonction Main ,cette fonction affiche un menu afin de permettre à l’utilisateur d’exécuter des opérations sur les fichiers précédants .

    merci d'avance de m’avoir aidé!
    0
  21. mimi_lynda Messages postés 32 Statut Membre
     
    'et voici une fonction pour le nombre d'enregistrements qui en fait lit le nombre entier en entête de fichier '
    explique moi cette phrase,est elle demandée ds l'exo?
    0
  • 1
  • 2