Fichiers et langage C

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+

6 réponses

  1. 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
    1. c fclose
      0
    2. Contributeur
      Non c'est bien close dans ce cas, puisque fichier est un descripteur et non de type FILE*.
      Et le post remonte à 2004...
      0
  2. salut nebul
    la fonction read() est propre au C ??

    merci de ton aide
    :)
    0
    1. 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
    2. @Nebulj 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
  3. 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
    1. 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
      1. 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
        1. @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
          1. Contributeur
            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