Linux
Résolu/Fermé
mimi_lindy
-
20 févr. 2008 à 18:57
mimi_lynda Messages postés 30 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 15 novembre 2008 - 5 mai 2008 à 22:39
mimi_lynda Messages postés 30 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 15 novembre 2008 - 5 mai 2008 à 22:39
A voir également:
- Linux
- Linux mint 32 bits - Télécharger - Systèmes d'exploitation
- Diskinternals linux reader - Télécharger - Stockage
- Linux live usb creator - Télécharger - Outils Internet
- Quel linux choisir - Guide
- Backtrack linux - Télécharger - Sécurité
35 réponses
mimi_lynda
Messages postés
30
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
15 novembre 2008
20 févr. 2008 à 21:51
20 févr. 2008 à 21:51
#include <stdio.h>
void perror (const char *s);
#include <errno.h>
const char *sys_errlist[];
int sys_nerr;
c'est ca le code pour le message d'erreur ?
void perror (const char *s);
#include <errno.h>
const char *sys_errlist[];
int sys_nerr;
c'est ca le code pour le message d'erreur ?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
20 févr. 2008 à 22:12
20 févr. 2008 à 22:12
explique moi cette phrase,est elle demandée ds l'exo?
Même si dans l'ennoncé, n'est pas specifié, je pense que celui qui t'as donné l'exo a oublié de le dire où a laissé à toi de choisir
en fait, avoir un numéro entier dans l'en tête comme ça pour plaisir ne sers à rien
autant l'utiliser pour enregistrer le nombre d'entrées ;-)
Même si dans l'ennoncé, n'est pas specifié, je pense que celui qui t'as donné l'exo a oublié de le dire où a laissé à toi de choisir
en fait, avoir un numéro entier dans l'en tête comme ça pour plaisir ne sers à rien
autant l'utiliser pour enregistrer le nombre d'entrées ;-)
mimi_lynda
Messages postés
30
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
15 novembre 2008
21 févr. 2008 à 19:40
21 févr. 2008 à 19:40
Bonjour,voulez vous m’aider dans cet exo SVP
exo:
on désire traiter des fichiers linux ayant la structure suivante:
-une zone d'entête qui consiste en un entier de votre choix
-une suite d'objets ayant la structure suivante:-nom
-prénom
-age
les opérations a réaliser 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'erreur dans un appel système 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édents .
merci d'avance de m’avoir aidé!
exo:
on désire traiter des fichiers linux ayant la structure suivante:
-une zone d'entête qui consiste en un entier de votre choix
-une suite d'objets ayant la structure suivante:-nom
-prénom
-age
les opérations a réaliser 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'erreur dans un appel système 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édents .
merci d'avance de m’avoir aidé!
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
21 févr. 2008 à 21:21
21 févr. 2008 à 21:21
Salut,
je vais t'avancer un peu, mais il faut que tu travailles aussi de ton côté sinon, ça ne sera pas vraiment un aide
je vais t'avancer un peu, mais il faut que tu travailles aussi de ton côté sinon, ça ne sera pas vraiment un aide
/* exo2.c */ /* Ennoncé : 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 . Fin Ennoncé */ #include<stdio.h> #include<stdlib.h> #include<errno.h> typedef struct { char nom[100]; char prenom[100]; int age; }Personne; int menu(); void Affiche(); void CreerPersonne(); int main() { int choix = 0; while((choix=menu()) != 6){ switch(choix){ case 1: printf("ouverture\n",choix); Affiche(); break; case 2: printf("nombre enregistrement\n"); break; case 3: printf("affiche ième enregistrement\n"); break; case 4: printf("ajoute nouvel enregistrement\n"); CreerPersonne(); break; case 5: printf("modifier ième enregistrement\n"); break; case 6: printf("Au revoir!\n"); return 0; default: printf("/!\\ Option inexistante /!\\\n"); break; } } return 0; } int menu(){ int choix; printf(" ***** MENU *****\n\n"); printf("1. ouverture d'un fichier existant et affichage des enregistrement\n" "2. affiche le nombre d'enregistrements\n" "3. affiche le i=eme enregistrement\n" "4. ajoute un nouvel enregistrementr\n" "5. modifie le i=eme enregistrement\n" "6. Quitter\n"); printf("Faites votre choix : "); scanf("%d",&choix); getchar(); return choix; } void Affiche(){ FILE *fb; Personne elem; if(NULL == (fb = fopen("pers.dat","rb"))){ printf("Erreur numéro %d\n",errno); perror("Fichier\n"); }else{ while(fread(elem.nom,100,1,fb) == 1 && fread(elem.prenom,100,1,fb)==1 && fread(&elem.age,sizeof(int),1,fb)){ printf("Nom : %s, Prenom : %s, Age : %d\n", elem.nom,elem.prenom,elem.age); } } fclose(fb); } void CreerPersonne(){ FILE *fb; Personne nouveau; if(NULL == (fb = fopen("pers.dat","a+b"))){ printf("Erreur numéro %d\n",errno); perror("Fichier\n"); }else{ printf("--- Nouvel enregistrement ---\n"); printf("Entrez le nom : "); scanf("%s", nouveau.nom); printf("Entrez le prénom : "); scanf("%s",nouveau.prenom); printf("Entrez l'âge : "); scanf("%d",&nouveau.age); fwrite(nouveau.nom,100,1,fb); fwrite(nouveau.prenom,100,1,fb); fwrite(&nouveau.age,sizeof(int),1,fb); } fclose(fb); }
mimi_lynda
Messages postés
30
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
15 novembre 2008
21 févr. 2008 à 21:40
21 févr. 2008 à 21:40
merci pour ton aide,
bien sur que je vais travailler dessus,jai besoin davoir linux et c++?pour compiler et voir l'execution.
c'est la solution pour tout l'exo?je veux dire le nouvel exo que jai posté aujourdhui
envoi moi un message pour me montrer un peu une petite explication pour chaque fonction,elle fait koi par exemple
comment je peux compiler le fichier et lexecuter sous linux?(les étapes)
merci 1000 fois
bien sur que je vais travailler dessus,jai besoin davoir linux et c++?pour compiler et voir l'execution.
c'est la solution pour tout l'exo?je veux dire le nouvel exo que jai posté aujourdhui
envoi moi un message pour me montrer un peu une petite explication pour chaque fonction,elle fait koi par exemple
comment je peux compiler le fichier et lexecuter sous linux?(les étapes)
merci 1000 fois
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
23 févr. 2008 à 12:51
23 févr. 2008 à 12:51
Bonjour,
j'attendais voir un peu ce que tu as fait ;-(
bon voici un exemple un peu plus complet (en l'exécutant plusieurs fois et en lisant le code normalement tu devras comprendre ;-)
je n'ai pas traiter l'histoire de nombre entier au début de fichier que je trouve inutile.
l'exemple que je te donne, n'est pas le plus performant et la gestion d'erreur n'est pas mise au point
mais comme tu es débutante ça ne te posera pas des problèmes ;-)
le fichier s'appellera cette fois pers.dat et il ne doit pas être créer avant
tu dois enregister le code dans un fichier que tu l'appelleras par exemple exo.c
pour le compiler tu dois taper
gcc -o exo.exe exo2.c
pour exécuter tu dois taper
./exo.exe
j'attendais voir un peu ce que tu as fait ;-(
bon voici un exemple un peu plus complet (en l'exécutant plusieurs fois et en lisant le code normalement tu devras comprendre ;-)
je n'ai pas traiter l'histoire de nombre entier au début de fichier que je trouve inutile.
l'exemple que je te donne, n'est pas le plus performant et la gestion d'erreur n'est pas mise au point
mais comme tu es débutante ça ne te posera pas des problèmes ;-)
le fichier s'appellera cette fois pers.dat et il ne doit pas être créer avant
tu dois enregister le code dans un fichier que tu l'appelleras par exemple exo.c
pour le compiler tu dois taper
gcc -o exo.exe exo2.c
pour exécuter tu dois taper
./exo.exe
/* exo.c /* #include<stdio.h> #include<stdlib.h> #include<errno.h> typedef struct { char nom[100]; char prenom[100]; int age; }Personne; void CreerPersonne(); void Affiche(); void EditerEnregistrement(); int menu(); int NombreEnregistrements(); int AfficheEnregistrement(); int Recherche(); int main() { int choix = 0; int n; while((choix=menu()) != 6){ switch(choix){ case 1: Affiche(); break; case 2: if(n=NombreEnregistrements()) printf("Il y a %d enregistrements\n",n); else printf("Pas d'enregistrements\n"); break; case 3: AfficheEnregistrement(); break; case 4: CreerPersonne(); break; case 5: EditerEnregistrement(); break; case 6: printf("Au revoir!\n"); return 0; default: printf("/!\\ Option inexistante /!\\\n"); break; } } return 0; } int menu(){ int choix; printf("********************\n"); printf("* MENU *\n"); printf("********************\n"); printf("1. Ouverture d'un fichier existant et affichage des enregistrement\n" "2. Afficher le nombre d'enregistrements\n" "3. Afficher le Nème enregistrement\n" "4. Ajouter un nouvel enregistrementr\n" "5. Modifier le Nème enregistrement\n" "6. Quitter\n"); printf("Faites votre choix : "); scanf("%d",&choix); getchar(); return choix; } void Affiche(){ FILE *fb; Personne elem; if(NULL == (fb = fopen("pers.dat","rb"))){ printf("Err %d\n",errno); perror(" "); }else{ while(fread(elem.nom,100,1,fb) == 1 && fread(elem.prenom,100,1,fb)==1 && fread(&elem.age,sizeof(int),1,fb)){ printf("Nom : %s, Prenom : %s, Age : %d\n", elem.nom,elem.prenom,elem.age); } fclose(fb); } } void CreerPersonne(){ FILE *fb; Personne nouveau; if(NULL == (fb = fopen("pers.dat","a+b"))){ printf("Erreur numéro %d\n",errno); perror(""); }else{ printf("--- Nouvel enregistrement ---\n"); printf("Entrez le nom : "); scanf("%s", nouveau.nom); printf("Entrez le prénom : "); scanf("%s",nouveau.prenom); printf("Entrez l'âge : "); scanf("%d",&nouveau.age); fwrite(nouveau.nom,100,1,fb); fwrite(nouveau.prenom,100,1,fb); fwrite(&nouveau.age,sizeof(int),1,fb); } fclose(fb); } int NombreEnregistrements(){ FILE *fb; Personne elem; int nb = 0; if(NULL == (fb = fopen("pers.dat","rb"))){ printf("Err %d\n",errno); perror(" "); }else{ while(fread(elem.nom,100,1,fb) == 1 && fread(elem.prenom,100,1,fb) == 1 && fread(&elem.age,sizeof(int),1,fb)) ++nb; fclose(fb); } return nb; } int AfficheEnregistrement(){ int n,n_; FILE *fb; Personne elem; printf("Entrez le numéro d'enregistrement : "); scanf("%d",&n); n_ = NombreEnregistrements(); if(n < 1 || n > n_){ printf("Index hors plage\n"); return 0; }else{ if(NULL == (fb = fopen("pers.dat","rb"))){ printf("Err %d\n",errno); perror(" "); } fseek(fb,(100 + 100 + sizeof(int)) * (n-1),SEEK_SET); fread(elem.nom,100,1,fb); fread(elem.prenom,100,1,fb); fread(&elem.age,sizeof(int),1,fb); printf("Nom : %s, Prenom : %s, Age : %d\n", elem.nom,elem.prenom,elem.age); fclose(fb); return n; } } int Recherche(){ FILE *fb; Personne elem; char nom[100]; int i,choix; printf("------------------------------------------\n"); printf("| Rechercher l'enregistrement à modifier |\n"); printf("------------------------------------------\n"); printf(" 1. Recherche par nom\n 2. Recherche par position\n"); printf(" 3. Annuler\nFaites votre choix : "); scanf("%d",&choix); if(NULL == (fb = fopen("pers.dat","rb"))){ printf("Err %d\n",errno); perror(" "); } if(! NombreEnregistrements()) return 0; else{ switch(choix){ case 1: printf("Entrez nom : "); scanf("%s",nom); for(i=1;i<=NombreEnregistrements();++i){ fread(elem.nom,100,1,fb); fread(elem.prenom,100,1,fb); fread(&elem.age,sizeof(int),1,fb); if( strcmp(nom,elem.nom)==0){ printf("Nom : %s, Prenom : %s, Age : %d\n", elem.nom,elem.prenom,elem.age); fclose(fb); return i; } } return 0; break; case 2: return AfficheEnregistrement(); break; case 3: return 0; break; default: return 0; break; } } } void EditerEnregistrement(){ int pos,choix; FILE *fb; Personne elem; if(NULL == (fb = fopen("pers.dat","r+b"))){ printf("Err %d\n",errno); perror(" "); } if(! NombreEnregistrements()) return; else pos = Recherche(); if(!pos) printf("Opération annulée ou Enregistrement inexistant!\n"); else{ fseek(fb,(100 + 100 + sizeof(int))*(pos-1),SEEK_SET); printf("---------------------\n"); printf("| Menu modification |\n"); printf("---------------------\n"); printf(" 1. Modifier le nom\n 2. Modifier le prénom\n" " 3. Modifier l'age\n 4. Modifier tout\n" " 5. Annuler\n"); printf("Faites votre choix : "); scanf("%d",&choix); switch(choix){ case 1: printf("Entrez le nouveau nom : "); scanf("%s",elem.nom); fwrite(elem.nom,100,1,fb); fclose(fb); break; case 2: printf("Entrez le nouveau prénom : "); scanf("%s",elem.prenom); fseek(fb,100,SEEK_CUR); fwrite(elem.prenom,100,1,fb); fclose(fb); break; case 3: printf("Entrez l'age : "); scanf("%d",&elem.age); fseek(fb,100+100,SEEK_CUR); fwrite(&elem.age,sizeof(int),1,fb); fclose(fb); break; case 4: printf("Entrez le nouveau nom : "); scanf("%s",elem.nom); printf("Entrez le nouveau prénom : "); scanf("%s",elem.prenom); printf("Entrez l'age : "); scanf("%d",&elem.age); fwrite(elem.nom,100,1,fb); fwrite(elem.prenom,100,1,fb); fwrite(&elem.age,sizeof(int),1,fb); fclose(fb); break; case 5: printf("Opération annulée!\n"); break; } } }
mimi_lynda
Messages postés
30
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
15 novembre 2008
25 févr. 2008 à 21:31
25 févr. 2008 à 21:31
exo:
écrire en c(c++)une classe(une structure) qui comporte les fonctions membres:
-creer un fichier.
-ouvrir un fichier
-insérer en fin de fichier.
-fermer un fichier.
-ajouter une fonction "mean" à l'utilisateur ,qui affiche un menu afin de lui pérmettre d'éxécuter une fonction de la classe(structure).
aidez moi s'ils vous plait pour cet exo,jai besoin de la solution aussi tot que possible
merci d'avance!
écrire en c(c++)une classe(une structure) qui comporte les fonctions membres:
-creer un fichier.
-ouvrir un fichier
-insérer en fin de fichier.
-fermer un fichier.
-ajouter une fonction "mean" à l'utilisateur ,qui affiche un menu afin de lui pérmettre d'éxécuter une fonction de la classe(structure).
aidez moi s'ils vous plait pour cet exo,jai besoin de la solution aussi tot que possible
merci d'avance!
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
25 févr. 2008 à 21:34
25 févr. 2008 à 21:34
Salut,
déjà, tu ne dit même pas un merci pour ce que tu as réçu
et j'ai l'impression que tu veuilles qu'on fasse les exercices à ta place
tu peux commencer par nous montrer ce que tu as fait, et ensuite on pourra te donner des indications
déjà, tu ne dit même pas un merci pour ce que tu as réçu
et j'ai l'impression que tu veuilles qu'on fasse les exercices à ta place
tu peux commencer par nous montrer ce que tu as fait, et ensuite on pourra te donner des indications
mimi_lynda
Messages postés
30
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
15 novembre 2008
25 févr. 2008 à 22:36
25 févr. 2008 à 22:36
bsr,non bien sur que je vous remercie pour ce que vous avez fait,mais jai pas fini avec vous concèrnant l'autre exo,on en reparlera mais ce petit exo je dois avoir sa solution pour demain si vous voulez bien m'aidez,et pour votre information c'est aujourdhui que jai recu le cd linux boot pour commencer a compiler et a executer ce que vous mavez donné et voir les resultats...
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
26 févr. 2008 à 10:29
26 févr. 2008 à 10:29
Salut,
Le code qu'a fait lami20j pour toi est du ANSI C. Tu peux l'exécuter et le tester avec n'importe quel ordinateur quelque soit son système d'exploitation doté d'un compilateur C.
Quelques petites hypothèses, pour la suite... ton professeur, ou quiconque t'a donné cet exercice à faire, consulte ce site et tombe sur ton message. Il attend patiemment que tu lui remettes le résultat, te félicite parce qu'il fonctionne parfaitement et te donne un zéro pointé en te mettant sous le nez une impression du site.
Il est aussi arrivé dans le passé, dans ce forum, qu'un professeur n'attende pas, reconnaisse un de ses élèves et poste un message dans ce forum en le démasquant. C'est très drôle, sauf pour l'élève qui se fait prendre.
(qui sait, peut-être suis-je ce professeur ?)
Il peut aussi certainement arriver que d'autres élèves ayant reçu le même énoncé d'exercice, cherchant une solution à leur problème sur Google (CCM est très bien référencé sur Google), tombent sur ce site et copient tous la même solution. Imagine la surprise du professeur lorsqu'il va recevoir des codes sources identiques.
Dès lors, quelle est la conclusion qui s'impose ?
Dal
Le code qu'a fait lami20j pour toi est du ANSI C. Tu peux l'exécuter et le tester avec n'importe quel ordinateur quelque soit son système d'exploitation doté d'un compilateur C.
Quelques petites hypothèses, pour la suite... ton professeur, ou quiconque t'a donné cet exercice à faire, consulte ce site et tombe sur ton message. Il attend patiemment que tu lui remettes le résultat, te félicite parce qu'il fonctionne parfaitement et te donne un zéro pointé en te mettant sous le nez une impression du site.
Il est aussi arrivé dans le passé, dans ce forum, qu'un professeur n'attende pas, reconnaisse un de ses élèves et poste un message dans ce forum en le démasquant. C'est très drôle, sauf pour l'élève qui se fait prendre.
(qui sait, peut-être suis-je ce professeur ?)
Il peut aussi certainement arriver que d'autres élèves ayant reçu le même énoncé d'exercice, cherchant une solution à leur problème sur Google (CCM est très bien référencé sur Google), tombent sur ce site et copient tous la même solution. Imagine la surprise du professeur lorsqu'il va recevoir des codes sources identiques.
Dès lors, quelle est la conclusion qui s'impose ?
Dal
mimi_lynda
Messages postés
30
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
15 novembre 2008
7 mars 2008 à 21:23
7 mars 2008 à 21:23
bsr,si tes la lami20j,essai de repondre
je vx qlqs indications sur cette derniere solution que tu mavais doné,la solution repond a tout lexo?essai de majouter un petit code pour traiter l'histoire du nombre entier au debut,as tu fais ds ce code la création d'un fichier ?(bien sur dans la structure donné)
merci
je vx qlqs indications sur cette derniere solution que tu mavais doné,la solution repond a tout lexo?essai de majouter un petit code pour traiter l'histoire du nombre entier au debut,as tu fais ds ce code la création d'un fichier ?(bien sur dans la structure donné)
merci
mimi_lynda
Messages postés
30
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
15 novembre 2008
7 mars 2008 à 21:58
7 mars 2008 à 21:58
Bonjour,voulez vous m’aider dans cet exo SVP
exo:
on désire traiter des fichiers linux ayant la structure suivante:
-une zone d'entête qui consiste en un entier de votre choix
-une suite d'objets ayant la structure suivante:-nom
-prénom
-age
les opérations a réaliser sur de tels fichiers sont:
*création d’un fichier(avec la structure donnée précedement).
*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'erreur dans un appel système 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édents .
merci d'avance de m’avoir aidé!
exo:
on désire traiter des fichiers linux ayant la structure suivante:
-une zone d'entête qui consiste en un entier de votre choix
-une suite d'objets ayant la structure suivante:-nom
-prénom
-age
les opérations a réaliser sur de tels fichiers sont:
*création d’un fichier(avec la structure donnée précedement).
*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'erreur dans un appel système 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édents .
merci d'avance de m’avoir aidé!
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
8 mars 2008 à 09:39
8 mars 2008 à 09:39
Salut,
tu me deçois, tu n'a rien fait depuis le jour quand je t'ai donné le code
voici le code de ton exo (sauf *une fonction qui affiche en cas d'erreur dans un appel système le numéro et le message correspondant à l'erreur . )
pour ça tu as perror
et je m'arrête là
tu n'as qu'à le compiler et l'exécuter pour l'étudier
bonne continuation
Dal a raison
tu me deçois, tu n'a rien fait depuis le jour quand je t'ai donné le code
voici le code de ton exo (sauf *une fonction qui affiche en cas d'erreur dans un appel système le numéro et le message correspondant à l'erreur . )
pour ça tu as perror
et je m'arrête là
tu n'as qu'à le compiler et l'exécuter pour l'étudier
bonne continuation
Dal a raison
/* exo.c */ #include<stdio.h> #include<stdlib.h> #include<errno.h> typedef struct { char nom[100]; char prenom[100]; int age; }Personne; int menu(); void AjoutNumeroDeVotreChoixAuDebut(); void AfficheTousLesEnregistrements(); int NombreEnregistrements(); int AfficheEnregistrement(); void AjouteNouvelEnregitrement(); void EditerEnregistrement(); int Recherche(); int main() { int choix = 0; int n; while((choix=menu()) != 6){ switch(choix){ case 0: AjoutNumeroDeVotreChoixAuDebut(); break; case 1: AfficheTousLesEnregistrements(); break; case 2: if(n=NombreEnregistrements()) printf("Il y a %d enregistrements\n",n); else printf("Pas d'enregistrements\n"); break; case 3: AfficheEnregistrement(); break; case 4: AjouteNouvelEnregitrement(); break; case 5: EditerEnregistrement(); break; case 6: printf("Au revoir!\n"); return 0; default: printf("/!\\ Option inexistante /!\\\n"); break; } } return 0; } int menu(){ int choix; printf("********************\n"); printf("* MENU *\n"); printf("********************\n"); printf("0. Ajouter le numéro de votre choix au début du fichier\n" "1. Ouverture d'un fichier existant et affichage des enregistrement\n" "2. Afficher le nombre d'enregistrements\n" "3. Afficher le Nème enregistrement\n" "4. Ajouter un nouvel enregistrementr\n" "5. Modifier le Nème enregistrement\n" "6. Quitter\n"); printf("Faites votre choix : "); scanf("%d",&choix); getchar(); return choix; } void AjoutNumeroDeVotreChoixAuDebut(){ FILE *fb; int numero; if(NULL == (fb = fopen("pers.dat","a+b"))){ printf("Err %d\n",errno); perror("fopen"); } fclose(fb); if(NULL == (fb = fopen("pers.dat","r+b"))){ printf("Err %d\n",errno); perror("fopen"); }else { printf("Entrez un numéro de votre choix : "); scanf("%d",&numero); fwrite(&numero,sizeof(int),1,fb); } fclose(fb); } void AfficheTousLesEnregistrements(){ FILE *fb; Personne elem; int numero; if(NULL == (fb = fopen("pers.dat","rb"))){ printf("Err %d\n",errno); perror(" "); }else{ fread(&numero,sizeof(int),1,fb); printf("Numéro de début : %d\n",numero); while(fread(elem.nom,100,1,fb) == 1 && fread(elem.prenom,100,1,fb)==1 && fread(&elem.age,sizeof(int),1,fb)){ printf("Nom : %s, Prenom : %s, Age : %d\n", elem.nom,elem.prenom,elem.age); } fclose(fb); } } void AjouteNouvelEnregitrement(){ FILE *fb; Personne nouveau; if(NULL == (fb = fopen("pers.dat","a+b"))){ printf("Erreur numéro %d\n",errno); perror(""); }else{ fseek(fb,sizeof(int),SEEK_SET); printf("--- Nouvel enregistrement ---\n"); printf("Entrez le nom : "); scanf("%s", nouveau.nom); printf("Entrez le prénom : "); scanf("%s",nouveau.prenom); printf("Entrez l'âge : "); scanf("%d",&nouveau.age); fwrite(nouveau.nom,100,1,fb); fwrite(nouveau.prenom,100,1,fb); fwrite(&nouveau.age,sizeof(int),1,fb); } fclose(fb); } int NombreEnregistrements(){ FILE *fb; Personne elem; int nb = 0; if(NULL == (fb = fopen("pers.dat","rb"))){ printf("Err %d\n",errno); perror(" "); }else{ while(fread(elem.nom,100,1,fb) == 1 && fread(elem.prenom,100,1,fb) == 1 && fread(&elem.age,sizeof(int),1,fb)) ++nb; fclose(fb); } return nb; } int AfficheEnregistrement(){ int n,n_; FILE *fb; Personne elem; printf("Entrez le numéro d'enregistrement : "); scanf("%d",&n); n_ = NombreEnregistrements(); if(n < 1 || n > n_){ printf("Index hors plage\n"); return 0; }else{ if(NULL == (fb = fopen("pers.dat","rb"))){ printf("Err %d\n",errno); perror(" "); } fseek(fb,sizeof(int),SEEK_SET); fseek(fb,(100 + 100 + sizeof(int)) * (n-1),SEEK_CUR); fread(elem.nom,100,1,fb); fread(elem.prenom,100,1,fb); fread(&elem.age,sizeof(int),1,fb); printf("Nom : %s, Prenom : %s, Age : %d\n", elem.nom,elem.prenom,elem.age); fclose(fb); return n; } } int Recherche(){ FILE *fb; Personne elem; char nom[100]; int i,choix; printf("------------------------------------------\n"); printf("| Rechercher l'enregistrement à modifier |\n"); printf("------------------------------------------\n"); printf(" 1. Recherche par nom\n 2. Recherche par position\n"); printf(" 3. Annuler\nFaites votre choix : "); scanf("%d",&choix); if(NULL == (fb = fopen("pers.dat","rb"))){ printf("Err %d\n",errno); perror(" "); } if(! NombreEnregistrements()) return 0; else{ switch(choix){ case 1: printf("Entrez nom : "); scanf("%s",nom); fseek(fb,sizeof(int),SEEK_SET); for(i=1;i<=NombreEnregistrements();++i){ fread(elem.nom,100,1,fb); fread(elem.prenom,100,1,fb); fread(&elem.age,sizeof(int),1,fb); if( strcmp(nom,elem.nom)==0){ printf("Nom : %s, Prenom : %s, Age : %d\n", elem.nom,elem.prenom,elem.age); fclose(fb); return i; } } return 0; break; case 2: return AfficheEnregistrement(); break; case 3: return 0; break; default: return 0; break; } } } void EditerEnregistrement(){ int pos,choix; FILE *fb; Personne elem; if(NULL == (fb = fopen("pers.dat","r+b"))){ printf("Err %d\n",errno); perror(" "); } if(! NombreEnregistrements()) return; else pos = Recherche(); if(!pos) printf("Opération annulée ou Enregistrement inexistant!\n"); else{ fseek(fb,sizeof(int),SEEK_SET); fseek(fb,(100 + 100 + sizeof(int))*(pos-1),SEEK_CUR); printf("---------------------\n"); printf("| Menu modification |\n"); printf("---------------------\n"); printf(" 1. Modifier le nom\n 2. Modifier le prénom\n" " 3. Modifier l'age\n 4. Modifier tout\n" " 5. Annuler\n"); printf("Faites votre choix : "); scanf("%d",&choix); switch(choix){ case 1: printf("Entrez le nouveau nom : "); scanf("%s",elem.nom); fwrite(elem.nom,100,1,fb); fclose(fb); break; case 2: printf("Entrez le nouveau prénom : "); scanf("%s",elem.prenom); fseek(fb,100,SEEK_CUR); fwrite(elem.prenom,100,1,fb); fclose(fb); break; case 3: printf("Entrez l'age : "); scanf("%d",&elem.age); fseek(fb,100+100,SEEK_CUR); fwrite(&elem.age,sizeof(int),1,fb); fclose(fb); break; case 4: printf("Entrez le nouveau nom : "); scanf("%s",elem.nom); printf("Entrez le nouveau prénom : "); scanf("%s",elem.prenom); printf("Entrez l'age : "); scanf("%d",&elem.age); fwrite(elem.nom,100,1,fb); fwrite(elem.prenom,100,1,fb); fwrite(&elem.age,sizeof(int),1,fb); fclose(fb); break; case 5: printf("Opération annulée!\n"); break; } } }
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
8 mars 2008 à 09:48
8 mars 2008 à 09:48
je mets résolu
bob031
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
473
8 mars 2008 à 15:39
8 mars 2008 à 15:39
je mets résolu
ouaips ! moi je dirai plutôt ......."pondu et résolu" !
joli travail !
ouaips ! moi je dirai plutôt ......."pondu et résolu" !
joli travail !
mimi_lynda
Messages postés
30
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
15 novembre 2008
8 mars 2008 à 18:42
8 mars 2008 à 18:42
slt,jai cette solution et jai comencer a la compiler..mais une amie m'a dis que cette solution est du pur 'c',elle voulais dire que c'est pas du linux en arriere plan c,elle m'a dit qu'elle marche sous windows et linux et tout systeme d'exploitation,elle a dit que je dois utiliser les appels systeme de linux comme'intopen(mode..)' et 'intcreat(mode...)'.
cette lsolution c du linux?ou je px mettre le code de lerreure dans le programe (perror).
jai complier comme suit:
g++ exo.c(le fichier dans le kwrite est :exo.c)
jai executer comme suit
/exo.exe
c juste?
cette derniere solution que t'as posté c'est la plus complete?pas besoin de voir les autres?
merci
cette lsolution c du linux?ou je px mettre le code de lerreure dans le programe (perror).
jai complier comme suit:
g++ exo.c(le fichier dans le kwrite est :exo.c)
jai executer comme suit
/exo.exe
c juste?
cette derniere solution que t'as posté c'est la plus complete?pas besoin de voir les autres?
merci
Grunt
Messages postés
2773
Date d'inscription
jeudi 17 janvier 2008
Statut
Contributeur
Dernière intervention
3 avril 2009
301
9 mars 2008 à 00:05
9 mars 2008 à 00:05
1) il ne faut pas donner un nom de fichier objet à g++ ? quelque chose comme "g++ exo.c -o exo" ? Enfin si ça marche comme tu fais, tant mieux.
2)Pour exécuter il faut d'abord rendre exécutable ton fichier objet : "chmod +x exo" et ensuite seulement "./exo"
Si ce programme est multiplateforme, tant mieux, c'est une très bonne habitude à prendre !
2)Pour exécuter il faut d'abord rendre exécutable ton fichier objet : "chmod +x exo" et ensuite seulement "./exo"
Si ce programme est multiplateforme, tant mieux, c'est une très bonne habitude à prendre !
mimi_lynda
Messages postés
30
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
15 novembre 2008
5 mai 2008 à 22:39
5 mai 2008 à 22:39
bsr,jai besoin d'une aide urgente pour demain
exo1
ecrire un programme qui cree deux processus el pere affichera les entiers paires compris entre 1 et 100,le fils affichera les entiers impaires compris dans le meme intervalle .synchroniser les processus a l'aide des signaux pour que l'affichage soit ordonné .
exo2
ecrire un programme qui cree deux processus :
-le pere ouvre un fichier texte en lecture .on suppose que le fichier est composé de mots formés de caractères alphabétiques séparés par des espaces .
-le processus père recherche le mot dans le fichier et transmet au fils la valeur '1' si le mot est dans le fichier et '0' sinon .
(on a besoin d'un pipe)
faire les deux exos avec des appels systemes de linux avec du 'c' bien sur .
merci (jen ai vraiment besoin maintenant )
exo1
ecrire un programme qui cree deux processus el pere affichera les entiers paires compris entre 1 et 100,le fils affichera les entiers impaires compris dans le meme intervalle .synchroniser les processus a l'aide des signaux pour que l'affichage soit ordonné .
exo2
ecrire un programme qui cree deux processus :
-le pere ouvre un fichier texte en lecture .on suppose que le fichier est composé de mots formés de caractères alphabétiques séparés par des espaces .
-le processus père recherche le mot dans le fichier et transmet au fils la valeur '1' si le mot est dans le fichier et '0' sinon .
(on a besoin d'un pipe)
faire les deux exos avec des appels systemes de linux avec du 'c' bien sur .
merci (jen ai vraiment besoin maintenant )