Dans le QCM S5, la réponse positive pour le comptage des fichiers est la suivante:
int nfiles(char * name) {
DIR *dirp;
struct dirent *dp;
dp=malloc(sizeof(struct dirent));
if(dp==NULL) {
return -1;
}
dirp = opendir(name);
if(dirp==NULL) {
return -1;
}
int count=0;
while ((dp = readdir(dirp)) != NULL) {
if (dp->d_type==DT_REG) {
count++;
}
}
int err = closedir(dirp);
if(err<0) {
return -1;
}
return(count);
}
Bien que correct, ce programme leak de la mémoire (malloc de dp)... Laisse-t-on cela comme ça?