Bonjour,
Mon niveau en C est débutant, aussi je vous serais gré de pas trop vous moquer de moi
[-mod- pas de 'f-word' sur ce forum, merci]
Je dois coder un petit script pour pallier à un manque de fonction de findstr.exe de Windows !
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 /* search.exe doit recherche le premier paramètre dans différents fichiers. Le fichier "recherche.txt" contient une liste de tous les fichiers dans lesquels la recherche doit se faire (un par ligne). La chaine à recherché correspond à une entrée (ligne) du fichier. */ #include <stdio.h> #include <stdlib.h> #include <string.h> int main (int nbPar, char * Param[]) { FILE *fichier =NULL; FILE *fichier1 =NULL; char fichierDeRecherche[256] = ""; char buffer_occurance[256] = ""; //Verification du nombre de paramètre ! if (nbPar !=2){ printf("Le nombre de parametre est incorrecte !\n\n"); printf("Commande d'execution:\n"); printf("search.exe \"chaine a rechercher\""); return 1; } //Lecture du fichier recherche.txt fichier = fopen("recherche.txt", "r"); if (fichier != NULL){ // Lecture du fichier ligne par ligne while (fgets(fichierDeRecherche, sizeof fichierDeRecherche, fichier) != NULL){ // Troncation de la chaine char* scan = strchr(fichierDeRecherche, '\n'); if (scan) *scan = 0; //Lecture du fichier obtenu fichier1 = fopen(fichierDeRecherche, "r"); if (fichier1 != NULL){ while (fgets(buffer_occurance, sizeof buffer_occurance, fichier1) != NULL){ // Troncation de la chaine char* scan1 = strchr(buffer_occurance, '\n'); if (scan1) *scan1 = 0; // Comparaison des chaines if (!strcmp(Param[1], buffer_occurance)) { printf("%s est present dans %s \n", Param[1], fichierDeRecherche); } } } else { printf("Le fichier %s ne peut etre lu !\n", fichierDeRecherche); return 1; } } } else { printf("Le fichier recherche.txt ne peut etre lu !\n"); return 1; } return 0;}
Voici mon premier code, il fonctionne plutôt bien si ce n'est deux fuites mémoires (je corrige ça tout de suite :p).
Je dois maintenant modifier ce script.
Le script analyse toujours le fichier recherche.txt pour trouver la liste des fichiers à analyser, MAIS les fichiers analyser contiennent des path.
Exemple de fichier à analyser:
Ma comparaison ne doit plus être sur une ligne entière du fichier mais sur une partie de la ligne, soit le nom du fichier du path ! (je sais pas si je suis bien claire là :p
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 C:\WINDOWS\essais.txt .\changelog\rapport.log ..\travail\soft.exe
Donc si dans mon fichier à analyser j'ai:
ma comparaison doit se faire uniquement avec essais.txt (et pas le reste du path).
Code : Sélectionner tout - Visualiser dans une fenêtre à part C:\WINDOWS\essais.txt
Pour se faire j'inclus dans ma boucle un findstrr qui me retourne l'adresse du dernier \ présent dans ma chaine, ensuite je dois "avancé" jusque là fin de la chaine (adresse +1).
Mon problème est que je ne sais pas comment détecter la fin de la chaine, je bloque un peu au niveau compréhension et code.
Voilà, ce fut un peu long, j'espère que j'ai su bien m'exprimer ^^
Merci à ceux qui m'auront lu et à ceux qui voudront bien aidé un newbee
Amicalement, sloshy
[-mod- typos corrigées. Je rappelle que Firefox dispose d'un plugin 'correction d'orthographe'...]
Partager