question sur structure stat
Bonjour
J ai une petite question, par rapport a ma fonction, je l est ecrite de 2 facon différente et elle marche bien dans les deux cas mais laquelle est la mieux ? et quel est la réel différence ? voila la premiere variante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| struct stat *stat_fichier(char *nomFichier)
{
struct stat *fichier;
fichier = malloc(sizeof(struct stat));
if(!fichier)
{
fprintf(stderr,"Allocation impossible\n");
exit(EXIT_FAILURE);
}
if(stat(nomFichier, fichier) != 0)
{
perror("fstat ");
exit(EXIT_FAILURE);
}
return fichier;
} |
et voila la deuxieme :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| struct stat *stat_fichier(char *nomFichier)
{
void *fichier = NULL;
fichier = (struct stat*)malloc(sizeof(struct stat));
if(!fichier)
{
fprintf(stderr,"Allocation impossible\n");
exit(EXIT_FAILURE);
}
if(stat(nomFichier, fichier) != 0)
{
perror("fstat ");
exit(EXIT_FAILURE);
}
return fichier;
} |
et dans la main je l apel comme ca:
Code:
1 2 3
| info = stat_fichier("info.txt");
printf("taille du fichier : %lu \n", info->st_size); |
info est alloué au debut donc tous marche dans les deux cas, mais quelle difference il y a?
et une autre question a cette ligne :
Code:
fichier = (struct stat*)malloc(sizeof(struct stat));
ca marche tres bien sans le cast comme ca :
Code:
fichier = malloc(sizeof(struct stat));
J ai lus des documents ou il est dit que c est obligatoire , et dans d autre que c' est un manque de lisibilité pour le code et que ca sert a rien ? qu est ce qu il en est vraiment ?
Merci a vous.