Struct ffblk erreur

Résolu
Bonjour.

J'aimerais utiliser ceci en langage C :
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>

int main()
{
    struct ffblk ffblk;
    return 0;
}

Le compilateur me renvoie cette erreur :
error: storage size of 'ffblk' isn't known


Quelqu'un peut m'aider s'il vous plait ?

Merci,

--
<\EchoIsON>

1 réponse

  1. Contributeur
    Bonjour,

    Le compilateur t'indique qu'il ne connaît pas la structure ffblk...
    L'as-tu définie ?
    1. Elle est est le dos.h, normalement.
    2. En fait, le compilateur reconnait bien la structure ffblk dans dos.h, puisque le code
      struct ffblk
      fonctionne et ne renvoie aucune erreur.
      Si je veux utiliser cette structure pour définir autre chose par exemple :
      struct ffblk test;

      Le compilateur me renvoie cette erreur.
    3. Contributeur
      Le code struct ffblk ne veut rien dire... C'est juste valable pour définir une structure, chose que fait le dos.h normalement. As-tu vérifié que le dos.h de ta machine contenait bien cette définition ? Il est possible que tu n'utilises pas une bonne version...
    4. J'ai vérifié, le dos.h ne contient pas la structure ffblk.
      Mais alors où est-ce-qu'elle est ? Car normalement elle doit être soit dans dos.h, soit dans dir.h, elle n'est nul part.
      De plus, même en écrivant cette structure moi même dans le main, le compilateur ne me permet pas d'utiliser la fonction
      findfirst()
      et
      findnext()
      qui doivent êtres contenus dans io.h...
    5. #include <stdio.h>
      #include <stdlib.h>
      #include <dos.h>
      #include <io.h>
      #include <dir.h>
      
       struct ffblk 
       {
       char lfn_magic[6];
       short lfn_handle;
       unsigned short lfn_ctime;
       unsigned short lfn_cdate;
       unsigned short lfn_atime;
       unsigned short lfn_adate;
       char ff_reserved[5];
       unsigned char ff_attrib;
       unsigned short ff_ftime;
       unsigned short ff_fdate;
       unsigned long ff_fsize;
       char ff_name[260];
       };
      
      
      int main()
      {
          struct ffblk ffblk;
          int done;
      
          for(;;)
          {
              printf("Directory  *.*\n");
              done = findfirst("*.*",&ffblk,0);
              while( !done )
              {
                  printf("%s.%s\n", ffblk.ff_name);
                  done = findnext();
                  while(getchar() == EOF)
                      idle();
              }
              printf("test");
              while( getchar() == EOF )
                  idle();
          }
      
          return 0;
      }
      


      Ce code me renvoie une erreur sur findfirst, findnext et idle...
      EDIT : En fait je pense que c'est toujours à cause de la structure ffblk, je ne dois pas la rentrer manuellement normalement, elle devrait être dans dir.h ou dos.h

      EDIT 2 :
      Finalement, lorsque je sors le struct ffblk ffblk du main, il n'y a plus d'erreur sur ça.
      Mais je rencontre une autre erreur avec ce code :
      #include <stdio.h>
      #include <stdlib.h>
      #include <dos.h>
      #include <io.h>
      #include <dir.h>
      
      struct ffblk ffblk;
      int done;
      
      void main()
      {
      
          for(;;)
          {
              printf("Directory  *.*\n");
              done = findfirst("*.*",&ffblk,0);
              while( !done )
              {
                  printf("%s.%s\n", ffblk.ff_name);
                  done = findnext();
                  while(getchar() == EOF)
                      idle();
              }
              printf("test");
              while( getchar() == EOF )
                  idle();
          }
      
          //return 0;
      }
      

      L'erreur :
      error: invalid use of undefined type 'struct ffblk'