Pour la prochaine version de Windows, Microsoft voudrait offrir une interface qui permet de facilement connaitre la composition d'un dossier spécifique. Plus particulièrement cette interface informerait l'utilisateur sur la quantité de fichiers de chaque extension et de la taille totale que prennent ces fichiers.
Vous êtes chargé de développer un prototype de cette fonctionnalité en C. Vous devez programmer une fonction "fileAnalyzer" qui prend en argument un élément de type struct FilesStream *
et qui renvoie un résumé des fichiers sous le format struct Output *
.
Ces deux structures sont expliquées plus en détails plus bas.
Votre prototype reçoit les fichiers présents dans un dossier sous forme d'une liste chaînée. Le premier élément est lié au second, le second au troisième, etc. Le dernier élément est reconnaissable car il est lié à NULL
.
Vous pouvez vous attendre à une liste chaînée vide ou à l'opposé très grande. Cependant, le nombre d'extensions maximales que vous pouvez trouver dans un dossier est de 10 extensions différentes.
Comme expliqué précédemment, vous recevez en argument une liste chaînée, chaque node est défini ainsi:
struct FilesStream { char *filename; char *extension; int size; struct FilesStream *next; };
Votre fonction doit retourner un pointeur vers la première struct Output
, en tout vous devez avoir 10 struct Output
qui se suivent dans la mémoire. Une struct Output
est définie comme telle:
struct Output { char *extension; int number; int totalSize; };
Si jamais il y a moins de 10 extensions différents, les struct Output
non utilisées doivent être initialisées comme tel:
extension == NULL
number== 0
totalSize == 0
Exemples d'utilisation
- Avec les 3 fichiers suivant:
- image001.png d'une taille de 1460
- Photoshop.exe d'une taille de 76
- image002.png d'une taille de 798
- La deux premiers "struct Output" contiennent:
- extension: png
- number: 2
- totalSize: 2258
- extension: exe
- number: 1
- totalSize: 76
- Les huit prochaines "struct Output" sont toutes comme tel:
- extension: NULL
- number: 0
- totalSize: 0