Struct ffblk erreur

Résolu/Fermé
Utilisateur anonyme - 24 févr. 2016 à 10:56
 Utilisateur anonyme - 25 févr. 2016 à 11:22
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
24 févr. 2016 à 13:31
Bonjour,

Le compilateur t'indique qu'il ne connaît pas la structure ffblk...
L'as-tu définie ?
0
Utilisateur anonyme
24 févr. 2016 à 14:13
Elle est est le dos.h, normalement.
0
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
24 févr. 2016 à 14:35
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
24 févr. 2016 à 14:39
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
#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