Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1358 connectés 

  FORUM HardWare.fr
  Programmation
  C

  les fichiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

les fichiers

n°1678564
mamitou
Posté le 29-01-2008 à 15:34:52  profilanswer
 

je veux votre aide pour manipuler les fichiers en Borland C

mood
Publicité
Posté le 29-01-2008 à 15:34:52  profilanswer
 

n°1678566
skeye
Posté le 29-01-2008 à 15:35:41  profilanswer
 

alors pose une question.[:dawa]


---------------
Can't buy what I want because it's free -
n°1678574
mamitou
Posté le 29-01-2008 à 15:41:41  profilanswer
 

comment on peut faire les operations suivantes en C concernant les fichiers: l'ouverture,l'insertion,la recherche d'un element, la suppression la recherche par index

n°1678596
skeye
Posté le 29-01-2008 à 16:06:54  profilanswer
 

En lisant la doc/le cours. Ce forum n'est pas une encyclopédie, mais un endroit où on t'aidera si tu as des problèmes.


---------------
Can't buy what I want because it's free -
n°1678600
mamitou
Posté le 29-01-2008 à 16:11:09  profilanswer
 

et ça est un probleme parce que j'essaye de faire ce travail mais j'ai trouver des problemes en execution et je vais envoyer mon code source pour me croire

n°1678628
Koyomi
www.sebastiengilles.com
Posté le 29-01-2008 à 16:52:17  profilanswer
 

Te fatigue pas skeye il arrete pas d'ouvrir des topic en boucle pour qu'on lui fasse le travail....

n°1678629
gilou
Modérateur
Modzilla
Posté le 29-01-2008 à 16:52:29  profilanswer
 

Eh bien envoie donc ce fameux code source.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1678631
gilou
Modérateur
Modzilla
Posté le 29-01-2008 à 16:56:01  profilanswer
 

Aux autres, je viens d'envoyer un PM d'avertissement a qui de droit...
Prevenez moi en cas de recidive (creation d'un topic inutile)
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1678665
kyntriad
Posté le 29-01-2008 à 17:35:12  profilanswer
 

mamitou a écrit :

je veux votre aide pour manipuler les fichiers en Borland C


 
J'exige ton aide pour faire ma vaisselle ! :jap:


Message édité par kyntriad le 29-01-2008 à 17:35:23

---------------
You can't start a fire with moonlight
n°1678715
Emmanuel D​elahaye
C is a sharp tool
Posté le 29-01-2008 à 19:08:01  profilanswer
 

mamitou a écrit :

comment on peut faire les operations suivantes en C concernant les fichiers: l'ouverture,l'insertion,la recherche d'un element, la suppression la recherche par index


Tu lis ton cours de C, tu fais de ton mieux et tu postes ton code si il y'a un problème.

 

http://mapage.noos.fr/emdel/notes.htm#fichiers

 



Message édité par Emmanuel Delahaye le 29-01-2008 à 19:08:51

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
mood
Publicité
Posté le 29-01-2008 à 19:08:01  profilanswer
 

n°1679549
mamitou
Posté le 31-01-2008 à 11:49:50  profilanswer
 

slt j'ai fait l'ouverture d'un fichier la création d'u enregistrement la recherche mais la suppression ...
voilà mon code source:
//------------------------------------------------------------------------------
#pragma argsused
#include<stdio.h>
#include<stdlib.h>
#include <exception>
#include <iostream>
typedef struct{
               char nom[10],prenom[10];
               int age,code;
               int indexe[20][2];
               }personne;
int main(int argc, char* argv[])
{
FILE *p_fichier;
char nom_fichier[35];
personne p;
int c,nb,x,y,i,a;
bool trouver=faux;
/*création et remplissage*/
printf("entrer le nom de fichier:\n" );
scanf("%s",nom_fichier);
p_fichier=fopen (nom_fichier,"w" );
printf("entrer le nombre d'enregistrement a creer:\n" );
scanf("%d",&nb);
c=0;
while(c<nb)
           {
           printf("entrer le nom de personne:\n" );
           scanf("%s",p.nom);
           fprintf(p_fichier,"%s",p.nom);
           printf("entrer le prenom de personne:\n" );
           scanf("%s",p.prenom);
           fprintf(p_fichier,"%s",p.prenom);
           printf("entrer l'age de personne:\n" );
           scanf("%d",&p.age);
           fprintf(p_fichier,"%d",p.age);
           printf("entrer le code de personne:\n" );
           scanf("%d",&p.code);
           fprintf(p_fichier,"%d",p.code);
           c++;
           }
fclose(p_fichier);
/*lecture et affichage*/
p_fichier=fopen(nom_fichier,"r" );
c=0;
while(!feof(p_fichier))
                       {
                       fscanf(p_fichier,"%s\n",p.nom);
                       printf("le nom est:%s\n",p.nom);
                       fscanf(p_fichier,"%s\n",p.prenom);
                       printf("le prenom est:%s\n",p.prenom);
                       fscanf(p_fichier,"%d\n",p.age);
                       printf("l'age est:%d\n",p.age);
                       fscanf(p_fichier,"%d\n",p.code);
                       printf("le code est:%d\n",p.code);
                       c++;
                       }
fclose(p_fichier);
/*suppression*/
p_fichier=fopen(nom_fichier,"w" );
printf("donner le code de la personne que vous voulez supprimer:\n" );
scanf("%d",&x);
 
while(!feof(p_fichier))
{
if(p.code==x) delete(p);
        else c++;
}
printf("la personne a ete supprimee\n" );
fclose(p_fichier);
/*le recherche*/
 
p_fichier=fopen(nom_fichier,"r" );
 
printf("donner le code de la personne recherchee:\n" );
scnf("%d",&y);
while(!feof(p_fichier)| trouver=vrai)
{
if(p.code==y)
{
trouver=vrai;
printf("\n\t la personne recherchee s'appelle:%s %s\n",p.nom,p.prenom);
printf("\n \t son age est: %d\n",p.age);
}
else c++;
}
if(trouver==faux) printf("\n cette personne n'existe pas\n" );
fclose(p_fichier);
/*la recherche par indexe*/
p_fichier=fopen(nom_fichier,"w" );
i=1;
while(i>nb_pres)
{
p.[i][1]=i;
p.indexe[i][2]=p.code;
i++;
}
printf("la table d'indexe est: %d\n",p.indexe);
 
printf(" donner l'indexe :\n" );
scanf("%d",&a);
while(feof(p_fichier))
{
if(i==a)
{
trouver=vrai;
fseek(p_fichier,(i-1)*sizeof(p_fichier),1);
printf("\n \t la personne s'appelle: %s %s\n",p.nom,p.prenom);
printf("\n \t son age est: %d\n",p.age);
}
else if(touver==faux) printf ("\n\t cette personne n'existe pas" );
}
fclose(p_fichier);
 
 
getchar();
return 0;
}
 
//----------------------------------------------------------

n°1679592
Emmanuel D​elahaye
C is a sharp tool
Posté le 31-01-2008 à 12:33:31  profilanswer
 

mamitou a écrit :

slt j'ai fait l'ouverture d'un fichier la création d'u enregistrement la recherche mais la suppression ...
voilà mon code source:

Code :
  1. #include <exception>
  2. #include <iostream>



Pas du C.  


Project   : Forums
Compiler  : GNU GCC Compiler (called directly)
Directory : C:\dev\forums\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.c
main.c:1: warning: ignoring #pragma argsused  
main.c:4:21: exception: No such file or directory
main.c:5:20: iostream: No such file or directory
main.c: In function `main':
main.c:17: error: `bool' undeclared (first use in this function)
main.c:17: error: (Each undeclared identifier is reported only once
main.c:17: error: for each function it appears in.)
main.c:17: error: syntax error before "trouver"
main.c:51: warning: format argument is not a pointer (arg 3)
main.c:53: warning: format argument is not a pointer (arg 3)
main.c:65: warning: implicit declaration of function `delete'
main.c:75: warning: implicit declaration of function `scnf'
main.c:76: error: `trouver' undeclared (first use in this function)
main.c:76: error: `vrai' undeclared (first use in this function)
main.c:86: error: `faux' undeclared (first use in this function)
main.c:91: error: `nb_pres' undeclared (first use in this function)
main.c:93: error: syntax error before '[' token
main.c:97: warning: int format, pointer arg (arg 2)
main.c:110: error: `touver' undeclared (first use in this function)
main.c: At top level:
main.c:11: warning: unused parameter 'argc'
main.c:11: warning: unused parameter 'argv'
Process terminated with status 1 (0 minutes, 0 seconds)
12 errors, 8 warnings


Reposte du C pur (ou modifie ton code) et utilisant les balises de code comme indiqué dans les règles du forum que tu aurais dû lire avant de poster.


Message édité par Emmanuel Delahaye le 31-01-2008 à 12:40:12

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1679602
mamitou
Posté le 31-01-2008 à 12:41:53  profilanswer
 

*suppression*/  
p_fichier=fopen(nom_fichier,"w" );  
printf("donner le code de la personne que vous voulez supprimer:\n" );  
scanf("%d",&x);  
 
while(!feof(p_fichier))  
{  
if(p.code==x) delete(p);  
        else c++;  
}  
printf("la personne a ete supprimee\n" );  
fclose(p_fichier);

n°1679603
Emmanuel D​elahaye
C is a sharp tool
Posté le 31-01-2008 à 12:44:40  profilanswer
 

mamitou a écrit :

*suppression*/
p_fichier=fopen(nom_fichier,"w" );
printf("donner le code de la personne que vous voulez supprimer:\n" );
scanf("%d",&x);
 
while(!feof(p_fichier))
{
if(p.code==x) delete(p);
        else c++;
}
printf("la personne a ete supprimee\n" );
fclose(p_fichier);


Mais c'est quoi ça ?

 
  • Ne compile pas
  • Pas de balises code.


C'est si difficile que ça de suivre les consignes ?

 

J'ai un peu regardé ton code.

 
Citation :

Code :
  1. while (!feof (p_fichier) | trouver = vrai)



Beaucoup d'erreurs basiques.

 
  • feof() ne fait pas ce que tu crois
  • Confusion entre = et ==,
  • Confusion entre | et ||, (en fait, c'est plutôt &&, ici)
  • Pas de bool en C90, mais int, 0 et 1

Comment te formes tu en C ? Ca parait très confus...

 

Sinon, il y a des erreurs qui prouvent que tu n'as jamais compilé ce code. C'est pas à nous de corriger tes fautes de frappes. Il faut faire un minimum d'effort, nous ne sommes pas à ton service.

 

Par exemple, 'delete' n'existe pas.

 

Ton code est 'en vrac'. On voit qu'il n'y a pas eu d'étude préalable qui aurais permis une organisation claire en fonctions simples.

 

Le rôle de 'indexe' nest pas clair.


Message édité par Emmanuel Delahaye le 31-01-2008 à 13:01:09

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1679763
tsunade sa​ma
BE AWAKED !!
Posté le 31-01-2008 à 15:12:37  profilanswer
 

d'après ce que vous avez écrit il me semble que vous n'avez pas une idée claire sur la méthode à suivre pour supprimer un enreg.  :pt1cable:  
je vais vous donnez une simple idée; pour faire la suppression d'un enregistrement à partir d'un fichier ;
elle est simple elle consiste à  copier votre fichier(càd tous les enreg.) sur une autre nouveau fichier ((que vous allez le créer)) sauf l'enreg. à supprimer et que vous le désignez au début par son nom ou par code ou comme vous voulez>>ensuite à recopier ce nouveau fichier dans le récent {ça sera un écrasement..}..
ok? :hello:


---------------
don't give up
n°1679766
skeye
Posté le 31-01-2008 à 15:14:27  profilanswer
 

tsunade sama a écrit :

d'après ce que vous avez écrit il me semble que vous n'avez pas une idée claire sur la méthode à suivre pour supprimer un enreg.  :pt1cable:  
je vais vous donnez une simple idée; pour faire la suppression d'un enregistrement à partir d'un fichier ;
elle est simple elle consiste à  copier votre fichier(càd tous les enreg.) sur une autre nouveau fichier ((que vous allez le créer)) sauf l'enreg. à supprimer et que vous le désignez au début par son nom ou par code ou comme vous voulez>>ensuite à recopier ce nouveau fichier dans le récent {ça sera un écrasement..}..
ok? :hello:


 
m'enfin...[:pingouino]


---------------
Can't buy what I want because it's free -
n°1679773
tsunade sa​ma
BE AWAKED !!
Posté le 31-01-2008 à 15:19:15  profilanswer
 

pour moi ça??!!

Citation :

m'enfin...[:pingouino]


---------------
don't give up
n°1679774
skeye
Posté le 31-01-2008 à 15:19:57  profilanswer
 

tsunade sama a écrit :

pour moi ça??!!

Citation :

m'enfin...[:pingouino]



euh, oui.
Ce n'est vraiment pas une bonne idée...et certainement pas ce qu'attend le prof qui lui a donné cet exercice. ;)


---------------
Can't buy what I want because it's free -
n°1679778
tsunade sa​ma
BE AWAKED !!
Posté le 31-01-2008 à 15:22:16  profilanswer
 

donc, pouvez vous me dire quelle idée vous proposé ?? [:ryoandr]  
SVP


Message édité par tsunade sama le 31-01-2008 à 15:24:03

---------------
don't give up
n°1679783
tsunade sa​ma
BE AWAKED !!
Posté le 31-01-2008 à 15:23:42  profilanswer
 

je suis une débutante et ça est tout ce que je sais..
en attendant... :bounce:


---------------
don't give up
n°1679785
skeye
Posté le 31-01-2008 à 15:24:26  profilanswer
 

supprimer la ligne dans le fichier directement...


---------------
Can't buy what I want because it's free -
n°1679788
Elmoricq
Modérateur
Posté le 31-01-2008 à 15:26:01  profilanswer
 

skeye a écrit :


euh, oui.
Ce n'est vraiment pas une bonne idée...et certainement pas ce qu'attend le prof qui lui a donné cet exercice. ;)


 
Bon en même temps ce qu'écrit mamitou est très confus, et j'ai la flemme de lire son code gribouilli.
Mais s'il s'agit effectivement de supprimer un enregistrement d'un fichier, alors tsunade sama a raison, il faut tout réécrire dans un nouveau fichier sans l'enregistrement à supprimer, et écraser l'ancien fichier avec le nouveau (ou alors j'ai pas compris non plus [:dawao])

n°1679799
tsunade sa​ma
BE AWAKED !!
Posté le 31-01-2008 à 15:29:57  profilanswer
 

pas compris..

Citation :

assert(tsunade_sama == mamitou);


 
 
mais avec quelle commande ??

Citation :

supprimer la ligne dans le fichier directement...


Message édité par tsunade sama le 31-01-2008 à 15:31:48

---------------
don't give up
n°1679801
Elmoricq
Modérateur
Posté le 31-01-2008 à 15:30:24  profilanswer
 

skeye a écrit :

supprimer la ligne dans le fichier directement...


 
Et comment tu comptes faire ça en C ? [:pingouino dei]

n°1679810
skeye
Posté le 31-01-2008 à 15:34:17  profilanswer
 

Elmoricq a écrit :


 
Et comment tu comptes faire ça en C ? [:pingouino dei]


 
ça existe plus les fichiers ouverts en lecture/écriture? J'ai pas fait de C depuis des lustres, mais quand même...[:pingouino]


---------------
Can't buy what I want because it's free -
n°1679814
tsunade sa​ma
BE AWAKED !!
Posté le 31-01-2008 à 15:35:52  profilanswer
 

et alors nazztazz

Citation :

pas compris..
Citation :
 
assert(tsunade_sama == mamitou);
 


 
votre pseudo signifie quoi ???!!! [:choco pops]


---------------
don't give up
n°1679823
tsunade sa​ma
BE AWAKED !!
Posté le 31-01-2008 à 15:38:43  profilanswer
 

oui..merci
mais que signifie ça !!!

Citation :

assert(tsunade_sama == mamitou);


---------------
don't give up
n°1679825
Elmoricq
Modérateur
Posté le 31-01-2008 à 15:40:24  profilanswer
 

man assert

Standard C Library Functions                           assert(3C)
 
NAME
     assert - verify program assertion
 
SYNOPSIS
     #include <assert.h>
 
     void assert(int expression);
 
DESCRIPTION
     The assert() macro inserts  diagnostics  into  applications.
     When  executed,  if  expression  is  FALSE  (zero), assert()
     prints the error message
 
     Assertion failed: expression, file xyz, line nnn
 
     on the standard error output and aborts. In the  error  mes-
     sage,  xyz is the name of the source file and nnn the source
     line number of the assert()  statement.  These  are  respec-
     tively  the  values  of the preprocessor macros __FILE__ and
     __LINE__.
 
     Since assert() is implemented as a macro, the expression may
     not contain any string literals.
 
     Compiling  with  the  preprocessor  option   -DNDEBUG   (see
     cc(1B)),  or with the preprocessor control statement #define
     NDEBUG ahead of the #include <assert.h> statement, will stop
     assertions from being compiled into the program.
 
     If the application is linked with -lintl,  messages  printed
     from  this  function are in the native language specified by
     the LC_MESSAGES locale category; see setlocale(3C).
 

n°1679829
Emmanuel D​elahaye
C is a sharp tool
Posté le 31-01-2008 à 15:45:20  profilanswer
 

skeye a écrit :


euh, oui.
Ce n'est vraiment pas une bonne idée...et certainement pas ce qu'attend le prof qui lui a donné cet exercice. ;)


C'est pourtant une solution industrielle bien connue.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1679830
tsunade sa​ma
BE AWAKED !!
Posté le 31-01-2008 à 15:45:32  profilanswer
 

pas encore..
mieu expliquez
Emmanuel Delahaye a écrit :
 

Citation :

C'est pourtant une solution industrielle bien connue.


Message édité par tsunade sama le 31-01-2008 à 15:50:12

---------------
don't give up
n°1679834
Emmanuel D​elahaye
C is a sharp tool
Posté le 31-01-2008 à 15:47:06  profilanswer
 

skeye a écrit :

supprimer la ligne dans le fichier directement...


Bah, non. C'est la meilleure façon de détruire ses données sans aucune possibilité de les récupérer...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1679835
skeye
Posté le 31-01-2008 à 15:47:06  profilanswer
 

Emmanuel Delahaye a écrit :

C'est pourtant une solution industrielle bien connue.

 

Je (re)découvre avec horreur que C ne sait pas faire proprement ce qui me semblait évident...au temps pour moi...[:skeye]

Message cité 1 fois
Message édité par skeye le 31-01-2008 à 15:47:12

---------------
Can't buy what I want because it's free -
n°1679844
Elmoricq
Modérateur
Posté le 31-01-2008 à 15:51:06  profilanswer
 

skeye a écrit :


 
Je (re)découvre avec horreur que C ne sait pas faire proprement ce qui me semblait évident...au temps pour moi...[:skeye]


 
Pas de manière portable en tout cas. :/

n°1679854
tsunade sa​ma
BE AWAKED !!
Posté le 31-01-2008 à 15:54:37  profilanswer
 

merci elmo mais je veut savoir pourquoi il a tapé mon pseudo !!!!

Citation :

tsunade_sama == mamitou


revennans à ça  

Citation :

supprimer la ligne dans le fichier directement...


comment le faire ,je me demande?!!!


---------------
don't give up
n°1679856
skeye
Posté le 31-01-2008 à 15:56:33  profilanswer
 

tsunade sama a écrit :


comment le faire ,je me demande?!!!


 
Les messieurs plus haut qui ont une pratique plus récente et nettement plus experte de C que moi semblent dire que tu avais raison, et que mon idée n'est pas réalisable de manière portable.


---------------
Can't buy what I want because it's free -
n°1679883
Elmoricq
Modérateur
Posté le 31-01-2008 à 16:13:01  profilanswer
 

tsunade sama a écrit :

merci elmo mais je veut savoir pourquoi il a tapé mon pseudo !!!!

 

C'était une petite moquerie, rien de plus. ;)
Ne t'en formalise pas, il y a simplement eu erreur, ça arrive. [:romf]

 


edit : oui c'est moi (les impliqués comprendront [:dawao])


Message édité par Elmoricq le 31-01-2008 à 16:14:04
n°1679889
MagicBuzz
Posté le 31-01-2008 à 16:15:35  profilanswer
 

(juste à propos de la suppression dans le fichier... il s'agit ici d'un fichier de record... la logique veut qu'on laisse les trous : suppression d'un élément ? > on passe à "0" le field qui permet de l'identifier. lorsqu'on crée un nouvel élément, plutôt que de faire un bête append  la fin du fichier, on construit d'abords une pile des positions contenant un enregistrement vide, afin de boucher les trous, et seulement quand la pile est entièremement consommée, on va faire des append).
 
sinon, ça sert à rien de bosser avec des fichiers de record, on perd tout l'intérêt du truc !
 
-- Edit : J'ai comme un doute là... on, sait pas faire du random access en C ?
http://msdn2.microsoft.com/fr-fr/l [...] S.80).aspx
 
Je ne vois pas de mode permettant d'ouvrir in fichier existant en écriture sans le détuire au préalable, ou bloquer les maj en mode append.
 
-- Re-edit : Si c'est bien le cas, y'a une lib qui permet de contourner cette limitation, ou si ça oblige les développeurs à travailler avec un langage tiers pour pouvoir travailler dans des fichiers volumineux nécessitants de hauts performances (genre un SGBD). Parceque si dès qu'on veut modifier le 3° byte d'un fichier de 2 Go on doit se taper une recopie du fichier en entier, ça va pas le faire :ouch:


Message édité par MagicBuzz le 31-01-2008 à 16:35:59
n°1679994
MagicBuzz
Posté le 31-01-2008 à 17:43:01  profilanswer
 

Ah ben nan mais si mais je suis nul moi je sais pas lire [:magicbuzz]
 

Citation :


"r+"
Opens for both reading and writing. (The file must exist.)


 
=> Voilà, donc c'est ce mode qu'il faut utiliser pouraccéder à un fichier record.
=> Là on peut lire, faire des trous, remplir les trous, et ajouter à la fin du fichier :)
 
En fait faut lire "r+" pour "Random Access" et non "Read"
 
 
Je me disais bien aussi que c'était énorme que ce soit impossible à faire en C !

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  les fichiers

 

Sujets relatifs
[C++] Transfert de fichiersCode Javascript pour appeler des fichiers dans une autre fenetre
RLE et fichiers textes[C] probleme de fichiers
Faire une redirection d'url.aide creation script batch rennomage de fichiers
Organisation des fichiers pour de la POOMoteur de recherche de fichiers
lecture de plusieurs fichiers avec iostream[RESOLU]Afficher le poids des fichiers listés automatiquement en PHP
Plus de sujets relatifs à : les fichiers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR