Bonjour a tous,
je suis en train de faire un petit programme pour supprimer les fichiers en double et je galere un peu

Je travaille sous l'OS linux et j'ai réussi via la commande ls -alR a recuperer les noms de fichiers, date de modif, arborescence et a tout mettre dans un tableau de 8 colonnes et du nombre de lignes qu'il faut de la maniere suivante
( sachant que j'ai mis chaque dossier pere qui est avant tous les fichiers contenus dans la colonne 1 de mon tableau en laissant les 7 autres colonnes vides)

/*
./.adobe/Acrobat/7.0/Preferences
drwxr-xr-x 3 tbouvet eleves 4096 2006-12-12 15:00 .
drwxr-xr-x 6 tbouvet eleves 4096 2006-12-12 15:00 ..
drwxr-xr-x 3 tbouvet eleves 4096 2006-12-12 15:00 Collab
-rw------- 1 tbouvet eleves 3051 2007-06-15 10:48 reader_prefs
./.adobe/Acrobat/7.0/Preferences/Collab
drwxr-xr-x 3 tbouvet eleves 4096 2006-12-12 15:00 .
drwxr-xr-x 3 tbouvet eleves 4096 2006-12-12 15:00 ..
-rw------- 1 tbouvet eleves 1367 2007-06-15 10:48 RSS
drwxr-xr-x 3 tbouvet eleves 4096 2006-12-12 15:00 Collab
*/

Dans le cas present, le fichier Collab est en double donc je souhaiterais recuperer les noms de dossier pere des deux fichiers en double afin de pouvoir faire une commande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
rm nom_dossier_pere/Collab
Pour cela, j'ai mis une structure conditionnelle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
if ptableau[i].colonne8 == NULL
qui devrait etre valide uniquement si la colonne 8 est nulle donc uniquement si il y a un nom de dossier dans la colonne 1, mais ca ne marche pas; le programme ne considere pas les cases comme etant nulles.

Est ce que quelqu'un sait pourquoi ces colonnes ne sont pas considérés comme nulles ou comment je pourrais faire autrement pour recuperer le nom de dossier..?

ci joint la declaration de mon tableau, et la facon dont j'ai récupéré les chaines de caractere provenant d'un fichier texte
Par avance merci
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
typedef struct ligne {                     
	char colonne1[NB];
	char colonne2[NB];
	char colonne3[NB];
	char colonne4[NB];
	char colonne5[NB];
	char colonne6[NB];
	char colonne7[NB];
	char colonne8[NB];
	} ligne;
 
 
char * avoile;
	avoile = (char*)malloc(NB*sizeof(char));
	i=-1;
	while ( ! feof (moulinette) )
	{
		fgets(chaine,NB,moulinette);    // on met ligne par ligne le resultat de ls -alR dans "chaine"
		tab=strtok(chaine," \n");       //on recupere chaque chaine de charactere de "chaine"
		i++;
		j=0;
		while (tab != NULL)             // tant que le tab n'est pas vide, on continue a prendre des valeurs
		{
			strcpy(tmp[j].t,tab);   //on met chaque valeur de tab dans une variable tampon tmp[j] de 0 a 7
			j++;
			tab = strtok (NULL," \n");  //on reinitialise tab
		}
		if (strlen(tmp[0].t)>strcspn(tmp[0].t,":")) //sctrcspn compte le nombre characteres moins le ":", strlen compte le nombre de characteres => si c un dossier, il se finit par ":", donc on rentre dans cette boucle
		{
			avoile = strtok(tmp[0].t,":"); //on met le nom de dossier sans ":" dans une variable tampon
			strcpy(ptableau[i].colonne1,avoile);  //on met cette variable tampon dans la ligne concernée colonne 1
		}
		else
		{
			strcpy(ptableau[i].colonne1,tmp[0].t); 	//droits d'execution, lecture
			strcpy(ptableau[i].colonne2,tmp[1].t);
			strcpy(ptableau[i].colonne3,tmp[2].t); 	//dossier utilisateur
			strcpy(ptableau[i].colonne4,tmp[3].t); 	//dossier parent
			strcpy(ptableau[i].colonne5,tmp[4].t); 	//poids
			strcpy(ptableau[i].colonne6,tmp[5].t); 	//date de derniere modif
			strcpy(ptableau[i].colonne7,tmp[6].t); 	//heure de derniere modif
			strcpy(ptableau[i].colonne8,tmp[7].t); 	//nom du fichier, dossier
		}
        }