Fichiers et langage C

dool -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
bonjour
j aimerais savoir s il est possible de lire dans un fichier en C sans avoir besoin de boucle
je m explique
j aimerais enregistrer dans un fichier des donnees variées, puis pouvoir les charger
le probleme c (hehe) que j ai l impression qu on ne peut pas faire plusieurs fscanf sur le mm fichier
si qq un a une solution...
merci
A+
A voir également:

6 réponses

Nebul Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   3
 
Bjour,

Y'a plein de façon de les lire les fichiers en C, moi jte propose l'exemple suivant avec une boucle malheureusement pour toi... je ne pense pas que ça existe sans :

fichier=open(nom,O_RDWR);
lu=read(fichier,&buffer,sizeof(buffer));
while(lu!=0)
{
lu=read(fichier,&buffer,sizeof(buffer));
}
close(fichier);

j'espère que ça pourra t'aider
2
gaga
 
c fclose
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Non c'est bien close dans ce cas, puisque fichier est un descripteur et non de type FILE*.
Et le post remonte à 2004...
0
dool
 
salut nebul
la fonction read() est propre au C ??

merci de ton aide
:)
0
Nebul Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   3
 
oui oui oui d'ailleurs c pas la seule !!!
ya par exemple fgets(pas conseillé par moi), fgetc, read etc...

;) bonne continuation
j'espère que ça t'a aidé
0
dool > Nebul Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
j ai du mal...
pour que ce soit + clair
voici les donnees sauvegardees


/*sauvegarde des joueurs*/
fichier = fopen(NomFichier,"w");
fprintf(fichier,"%s\n",sJoueur1);
fprintf(fichier,"%s\n",sJoueur2);
fprintf(fichier,"%s\n",sJoueurc);

/*sauvegarde du nb de tour*/
fprintf(fichier,"%d\n",iTour);

/*sauvegarde de l'echiquier*/
for(i=1;i<9;i++)
{
for(j=1;j<9;j++)
{
temp=echiquier[i][j];
fprintf(fichier,"%c %d %d %d %d %d\n",temp.cNom,temp.iJoueur,temp.bAxial,temp.bDiago,temp.bBouge,temp.iEchec);
}
}

/*sauvegarde des cimetieres*/
for(i=0;i<16;i++)
{
temp=cimetiere_blanc[i];
fprintf(fichier,"%c %d %d %d %d %d\n",temp.cNom,temp.iJoueur,temp.bAxial,temp.bDiago,temp.bBouge,temp.iEchec);
}
for(i=0;i<16;i++)
{
temp=cimetiere_noir[i];
fprintf(fichier,"%c %d %d %d %d %d\n",temp.cNom,temp.iJoueur,temp.bAxial,temp.bDiago,temp.bBouge,temp.iEchec);
}
fclose(fichier);
printf("oOo\t La partie est sauvegardee dans le fichier %s\toOo\n",NomFichier);
0
dool
 
le pb c ke j essaie d abord de lire des char (pas de pb) mais ensuite des int puis des structures composées de int et char
tu crois que je peux tt mettre ds le mm fichier
ou dois je faire des fichiers séparés?
0
dool
 
pour que ce soit + clair
voici les éléments sauvegardés


/*sauvegarde des joueurs*/
fichier = fopen(NomFichier,"w");
fprintf(fichier,"%s\n",sJoueur1);
fprintf(fichier,"%s\n",sJoueur2);
fprintf(fichier,"%s\n",sJoueurc);

/*sauvegarde du nb de tour*/
fprintf(fichier,"%d\n",iTour);

/*sauvegarde de l'echiquier*/
for(i=1;i<9;i++)
{
for(j=1;j<9;j++)
{
temp=echiquier[i][j];
fprintf(fichier,"%c %d %d %d %d %d\n",temp.cNom,temp.iJoueur,temp.bAxial,temp.bDiago,temp.bBouge,temp.iEchec);
}
}

/*sauvegarde des cimetieres*/
for(i=0;i<16;i++)
{
temp=cimetiere_blanc[i];
fprintf(fichier,"%c %d %d %d %d %d\n",temp.cNom,temp.iJoueur,temp.bAxial,temp.bDiago,temp.bBouge,temp.iEchec);
}
for(i=0;i<16;i++)
{
temp=cimetiere_noir[i];
fprintf(fichier,"%c %d %d %d %d %d\n",temp.cNom,temp.iJoueur,temp.bAxial,temp.bDiago,temp.bBouge,temp.iEchec);
}
fclose(fichier);
printf("oOo\t La partie est sauvegardee dans le fichier %s\toOo\n",NomFichier);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
somac
 
slt, je veux faire un programme en langage C qui met en ordre alphabetique les élèments d'un fichier, pouvez vous m'aider?
0
Thomas Leduc
 
@somac : il faut que tu le parse avec str_jenesaisplusquoi() qui te decoupe les chaines de caractéres suivant un séparateur ( type : " ").

@Nebul : Je me trompe peut-être, mais ton buffer est déjà une adresse (a part si c'est un seul caractére)... donc pas besoin de "&"
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Avant de répondre à un post, c'est bien de regarder la date.
Tu t'adresses à des personnes qui ont écrit entre 4 et 7 ans. Je doute qu'il te réponde, en tout cas, ils ne seront plus ce sujet ;-))).
0