IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Recherche chaine de caractere


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Points : 77
    Points
    77
    Par défaut Recherche chaine de caractere
    Bonjour a vous!
    Existe-t-il une fonction C qui permettent de rechercher une chaine de caracteres dans une arborescence de fichiers?
    Je ne vois pas comment faire?
    Si quelqu'un a une idée: JE PRENDS

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Points : 77
    Points
    77
    Par défaut
    Je ne sais pas si ce forum est mort mais j'aimerais en fait juste savoir si il existe une fonction en C qui permette de faire un peu comme un grep
    Merci d'avance

  3. #3
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut Re: Recherche chaine de caractere
    Citation Envoyé par fantomchris
    Existe-t-il une fonction C qui permettent de rechercher une chaine de caracteres dans une arborescence de fichiers?
    Une fonction C, je ne sais pas... mais il est possible de tout faire, alors...

    Peux-tu préciser ce que tu veux faire ?

    S'agit-il de chercher une chaîne de caractères dans le contenu des fichiers, dans une arborescence ?

    Ou bien s'agit-il de chercher une chaîne de caractères dans les noms des fichiers et répertoires d'une arborescence ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Points : 77
    Points
    77
    Par défaut
    Bonjour, si je ne me trompe pas il s'agit plutot de rechercher dans le contenu des fichiers, présents dans l'arborescence
    Et la je suis bloqué, mais je cherche

  5. #5
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par fantomchris
    Bonjour, si je ne me trompe pas il s'agit plutot de rechercher dans le contenu des fichiers, présents dans l'arborescence
    Et la je suis bloqué, mais je cherche
    Alors dans ce cas, je ne crains qu'il y ait d'autre manière que de passer par une exploration de l'arborescence, à coup de opendir/readdir/closedir, suivie pour chaque fichier trouvé d'une recherche à coup de fopen/(fread ou fget)/fclose et de strstr sur chaque contenu...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Points : 77
    Points
    77
    Par défaut
    J'étais en train d'explorer cette possiblité avec une fonction de parcours en récursif mais existe t il sur le site des explications valables sur l'utilisation de ces fonctions??
    J'ai aussi regardé la fonction scandir mais elle me semble un peu compliquer a mettre en oeuvre!
    Quelqu'un a t il une idée pour effectuer cette recherche??

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Comme d'hab, il faut regarder la FAQ

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Points : 77
    Points
    77
    Par défaut
    En ce qui concerne la fonction opendir, une question me taraude:
    Est on obligé de lui passer un chemin depuis la racine ou peut on lui passer un chemin relatif?
    Merci d'avance

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Points : 77
    Points
    77
    Par défaut
    Bon j'ai trouvé la reponse seul: il lui faut le chemin depuis la racine
    Par contre je ne vois pas comment arriver a faire la distinction entre un fichier et un dossier.
    Merci d'avance

  10. #10
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par fantomchris
    Bon j'ai trouvé la reponse seul: il lui faut le chemin depuis la racine
    Pas forcément. Tu peux passer '.' qui est le répertoire courant.
    Par contre je ne vois pas comment arriver a faire la distinction entre un fichier et un dossier.
    J'utilise une méthode barbare qui consiste à faire un fopen(). Si ça s'ouvre bien c'est un fichier accessible, sinon, c'est autre chose, et on ignore...

  11. #11
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Citation Envoyé par fantomchris
    Par contre je ne vois pas comment arriver a faire la distinction entre un fichier et un dossier.
    J'utilise une méthode barbare qui consiste à faire un fopen(). Si ça s'ouvre bien c'est un fichier accessible, sinon, c'est autre chose, et on ignore...
    Il doit y avoir aussi un moyen de "bricoler" quelquechose avec les fonctions stat/fstat/lstat.

    Ceci dit, si c'est peut-être moins barbare, est-ce plus portable ?

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Points : 77
    Points
    77
    Par défaut
    Bon, beh apres pas mal de recherche, voici le code que j'ai fait et qui marche nikel, si vous voulez le publier, je dis oui:

    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
     
    int recherche_chaine (char * fichier,char * chaine)
    {
    	FILE * fic;
    	char * buffer;
    	if ( fic=fopen(fichier,"rt") )
    	{
    		buffer=(char*)malloc(BUFF_SIZE*sizeof(char));
    		while (fgets(buffer,BUFF_SIZE,fic)!=NULL)
    		{
    			if ( strstr(buffer,chaine) != NULL )
    				return 0;
    		}
    		fclose(fic);
    	}
    	return 1;
    }
     
    int parcours_recursif (char * racine,char * chaine_a_chercher)
    {
    	struct dirent *lecture;
    	DIR *rep;
    	char temp [512];
    	if ((rep = opendir(racine))==NULL)
    		return 1;
    	while ((lecture = readdir(rep)))
    	{
    		if(strcmp(lecture->d_name,".")!=0 && strcmp(lecture->d_name,"..")!=0 )
    		{
    			strcpy(temp,racine);
    			strcat(temp,"/");
    			strcat(temp,lecture->d_name);
    			if ( (parcours_recursif(temp,chaine_a_chercher)) )
    			{
    				if ( !recherche_chaine(temp,chaine_a_chercher) )
    					printf("Le fichier %s contient la chaine %s\n",temp,chaine_a_chercher);
    			}
    		}
    	}
    	closedir(rep);
    	return 0;
    }
    Voila, je n'ai pas inclus les librairies, j'espere que ca aidera ceux qui en ont besoin! Ca fonctionne sous linux! Le reste je n'en sais rien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. rechercher chaine de caractere quelque soit la casse
    Par hugodu13 dans le forum VBScript
    Réponses: 8
    Dernier message: 10/12/2010, 21h49
  2. [Batch] Recherche chaine de caractere dans spool puis passage en variable VRAI/FAUX
    Par calamarz dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 09/04/2009, 15h50
  3. Recherche chaine de caracteres W2K3 server
    Par jujulev dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 02/07/2008, 10h10
  4. recherche chaine de caractere
    Par adriantox dans le forum VBScript
    Réponses: 6
    Dernier message: 22/11/2007, 15h54
  5. recherche chaine de caractere ne marche pas !!
    Par lobiman dans le forum Langage
    Réponses: 1
    Dernier message: 24/08/2006, 11h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo