Bonjour à tous!

Dans le cadre de mes études, mon prof nous a demandé de réalisé un projet en C. Ce projet est divisé en plusieurs exercices et chaque exercice doit aboutir sur un programme plus où moins liés entre eux.

Le premier est le suivant :

A l'aide de la bibliothèque ncurses (cf ncurses(3)), créer 3 fenêtres pavant la fenêtre de terminal courante, et positionnées comme :



Mettre un bord à chaque, et activer le défilement de texte pour chacune d'elle.
Faire un programme p1 qui lit des chaines de caractères entrées au clavier depuis la fenêtre inférieure et qui
les réécrits alternativement dans les fenêtres supérieures gauche et droite, jusqu'à ce qu'une chaine vide soit entrée.
Vérifier que tout ce qui a été alloué par le programme soit bien correctement restitué.


Jusque là, pas de problème, voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <stdio.h>
#include <ncurses.h>
#include <stdlib.h>
 
int main ()
{	
	char chaine [255];	
	int maxX;
	int maxY;
 
	initscr (); // Initialisation de Curses
 
	refresh (); // Mise à jour de l'affichage
 
	getmaxyx(stdscr, maxY, maxX);
 
	WINDOW * winGauche = newwin(maxY/2, maxX/2, 0, 0); // Création de la fenêtre win1
	WINDOW * winDroite = newwin(maxY/2, maxX/2, 0, maxX/2); 
	WINDOW * winBas = newwin(maxY/2, maxX, maxY/2, 0);  
 
	WINDOW * derwinGauche = derwin(winGauche, maxY/2-2, maxX/2-2, 1, 1); // Création de la sous-fenêtre derwin1 de win1
	WINDOW * derwinDroite = derwin(winDroite, maxY/2-2, maxX/2-2, 1, 1); 
	WINDOW * derwinBas = derwin(winBas, maxY/2-2, maxX-2, 1, 1); 
 
	scrollok(derwinGauche, TRUE);
	scrollok(derwinDroite, TRUE);
	scrollok(derwinBas, TRUE);
 
	box(winGauche, ACS_VLINE, ACS_HLINE); // Dessine la boîte winGauche
	box(winDroite, ACS_VLINE, ACS_HLINE); 
	box(winBas, ACS_VLINE, ACS_HLINE); 
 
	wrefresh (winGauche); // Affiche le fenêtre winGauche
	wrefresh (winDroite); 
	wrefresh (winBas); 
	wrefresh (derwinGauche); // Affiche la sous-fenêtre derwinGauche
	wrefresh (derwinDroite); 
	wrefresh (derwinBas); 
 
	do {
 
		wgetstr(derwinBas, chaine); // Saisi de la chaine par l'utilisateur dans la sous-fenêtre du bas
 
		waddstr(derwinGauche, chaine); // La chaine saisie précédemment est réécrite dans la sous-fenètre en haut à gauche
		waddstr(derwinGauche, "\n");
 
		wrefresh(derwinGauche);
 
		waddstr(derwinDroite, chaine); // La chaine saisie précédemment est réécrite dans la sous-fenètre en haut à droite
		waddstr(derwinDroite, "\n");
 
		wrefresh(derwinDroite);
 
		wrefresh (derwinBas);
 
	} while (chaine[0] != '\0');
 
	delwin(winGauche); //libère la mémoire de la fenêtre winGauche
	delwin(winDroite);
	delwin(winBas);
	delwin(derwinGauche); //libère la mémoire de la sous-fenêtre derwinGauche
	delwin(derwinDroite);
	delwin(derwinBas);
 
	endwin (); // Fin de Curses
 
	return (0);
}
Vient ensuite l'exercice suivant :

Faire un programme p2 qui lit des noms de fichier dans la fenêtre inférieure, et pour chacun d'eux,
recherche les fichiers correspondant sur le disque, affiche les noms complets des fichiers trouvés dans la fenêtre
supérieure gauche, et le nombre de fichiers trouvés dans la fenêtre supérieure droite.


Et là, c'est la débandade!

J'ai essayé de travailler avec le fichier d'en-tête dirent.h mais sans parvenir à mes fins...

Je viens donc vers vous pour vous poser la question suivante : est-ce que "dirent" est adapté à mon problème et je m'y prends comme un manche ou bien, existe-t-il un autre moyen faire le programme demandé?

D'après la FAQ C de Developpez.com, "dirent" devrait pouvoir faire ce que l'énoncé de l'exercice me demande mais je n'y arrive pas et je préfère venir vous voir maintenant plutôt que de perdre davantage de temps si jamais ce n'est pas le bon fichier d’en-tête à utiliser...

Merci d'avance pour vos conseil!