Struct ffblk erreur

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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,

1 réponse

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Le compilateur t'indique qu'il ne connaît pas la structure ffblk...
L'as-tu définie ?
0
Utilisateur anonyme
 
Elle est est le dos.h, normalement.
0
Utilisateur anonyme
 
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.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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...
0
Utilisateur anonyme
 
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...
0
Utilisateur anonyme
 
#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'
0