Prob : Afficher un répertoire en C & Mettre Données dans une structure - Programmation
Marsh Posté le 08-11-2001 à 16:24:08
si nom_fichier est un char[], je mettrai :
strcpy(nom_fichier,fblock.ff_name);
Marsh Posté le 08-11-2001 à 16:32:36
En premier, éviter le piège char chemin[6] pour mettre 6 caractères, le \0 terminal, il va chez qui, écraser un caractère de la variable suivante ? Faut toujours prévoir un de plus pour les char de chaînes (sauf si on écrit ses routines soi-même !).
moule = malloc(sizeof(struct lafile)); habituellement, il me semble qu'on précise le type, genre (char *)malloc(), ou (toto *)malloc(), .. C'est plus facile à reprendre/relire.
moule, c'est un quoi ? il est déclaré sous quel "type" ?
Ca gène pas d'allouer de la mémoire à moule plus d'une fois sans la libérer qq part ?
Aux autres à faire avancer le schmilibilick..
Marsh Posté le 08-11-2001 à 18:12:31
C est pas la norme tout ca !!!!!!
Marsh Posté le 08-11-2001 à 15:46:47
void affiche_fichiers(char lecteur)
{
struct ffblk fblock;
char chemin[6] = "C:\\*.*";
chemin[0] = lecteur;
if(findfirst(chemin,&fblock,NORMAL) != 0 )
{
puts("Erreur de lecteur !" );
}
printf("%s\t%d\n",fblock.ff_name,fblock.ff_fsize);
moule = malloc(sizeof(struct lafile));
debut = moule;
courant = moule;
moule -> nom_fichier = fblock.ff_name;
moule -> size_fichier = fblock.ff_fsize;
moule -> suivant = NULL;
while( findnext(&fblock) == 0)
printf("%s\t%d\n",fblock.ff_name,fblock.ff_fsize);
moule = malloc(sizeof(struct lafile));
courant -> suivant = moule;
courant = moule;
courant -> suivant = NULL;
moule -> nom_fichier = fblock.ff_name;
moule -> size_fichier = fblock.ff_fsize;
}
Le problème : cette ligne là marche : printf("%s\t%d\n",fblock.ff_name,fblock.ff_fsize);
Celle-ci, qui pourtant a les même noms que lautre, ne marche pas : moule -> nom_fichier = fblock.ff_name; <-- Msg d'erreur : LValue Required. Ma structure est correcte en passant.