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

Réseau C Discussion :

Comptage d'occurences dans un fichier


Sujet :

Réseau C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Points : 44
    Points
    44
    Par défaut Comptage d'occurences dans un fichier
    Bonjour,

    je voudrais compter le nombre d'occurrence dans un fichier :
    pour cela 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
     #include <stdio.h>
    #include <windows.h>
     
     
    void main (void)
    {
    	FILE*f;
    	char car[1000000]; //permettant d'avoir un tableau assez grand pour recevoir tous les caracteres
    	/* tres embetant ... */ 
    	int nLigne = 1;
     
     
    	f = fopen("google.htm","rw");
     
    	if (f  == NULL )
    	{
    		printf("fichier non ouvert\n");
    	}
     
     
    	 while( fgets( car, sizeof( car ), f ) )
        {
            if ( strstr(car, "google")  )
            {
                printf("mot 'google' trouvé à la ligne %d\n", nLigne);
            }
     
            nLigne++;
        }
     
     
    	fclose(f);
     
    }

    le tableau Car car il est tres grand. Et a mon but futur je voudrais pouvoir lire des petits fichiers comme des grands donc cela est bien embetant. Surtout que desfois il m'en trouve en trop.

    Voila merci de m'aider
    Bruno
    8)

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par bonjour69
    le tableau Car car il est tres grand. Et a mon but futur je voudrais pouvoir lire des petits fichiers comme des grands donc cela est bien embetant. Surtout que desfois il m'en trouve en trop.
    Rien compris, qu'est ce qui ne fonctionne pas?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char car[1000000];
    Pas besoin d'un tableau aussi grand, en effet tu utilises fgets, qui lit jusqu'a trouver un \n, c'a metonnerait qu'un fichier comporte une ligne de 1 millions de caractères sans retour a la ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (f  == NULL )
       {
          printf("fichier non ouvert\n");
       }
    Tres bien la verification , mais le probleme c'est que si l'ouverture a echouée, tu le dis mais tu continue le programme un petit
    serait le bienvenue.

    Un peu plus d'explications de meme
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Bonjour,
    Citation Envoyé par Skyrunner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char car[1000000];
    Pas besoin d'un tableau aussi grand, en effet tu utilises fgets, qui lit jusqu'a trouver un \n, c'a metonnerait qu'un fichier comporte une ligne de 1 millions de caractères sans retour a la ligne.
    Même ça ne serait pas génant puisque fgets prend en compte la taille du tableau donc si la ligne est trop grande, la suite sera récupérée au prochain appel.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Points : 44
    Points
    44
    Par défaut
    Bonjour,


    En effet je croyais que le tableau devais contenir tous les caractéres pour que : puisse rechercher l'occurrence "google" : mais bon apparemment quand je le fais sur un fichier texte, il a juste besoin de pour detecter le mot google.


    Par contre quand je lui fais chercher par exemple l'occurrence "google" sur la page google.htm ( copie de google.fr ) il ne trouve pas de google si je laisse la taille de mon tableau a 8. Il est nécéssaire que je l'agrandisse( environ 100 ).
    Est-ce du au fait que cela est .htm ?

    Et derniere chose comment puis-je lui indiquer un fin de ligne : car la ave le fgets il detecte un double espace comme un fin de ligne.


    Voila Merci
    Bruno

  5. #5
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par bonjour69
    Par contre quand je lui fais chercher par exemple l'occurrence "google" sur la page google.htm ( copie de google.fr ) il ne trouve pas de google si je laisse la taille de mon tableau a 8. Il est nécéssaire que je l'agrandisse( environ 100 ).
    Est-ce du au fait que cela est .htm ?
    Pas du tout, c'est juste que si par exemple dans la source ce soit ecrit comme ca : ici google
    fgets lit d'abord 8 caracteres : ici goo+\0
    Dedans ne se trouve pas google
    Puis lit la suite et google ne s'y trouvent pas non plus.

    Citation Envoyé par bonjour69
    Et derniere chose comment puis-je lui indiquer un fin de ligne : car la ave le fgets il detecte un double espace comme un fin de ligne.

    Voila Merci
    Bruno
    Double espace une fin de ligne ca metonnerait. La fin de ligne est representé pour fgets par un retour à la ligne \n
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  6. #6
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par gege2061
    Bonjour,
    Citation Envoyé par Skyrunner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char car[1000000];
    Pas besoin d'un tableau aussi grand, en effet tu utilises fgets, qui lit jusqu'a trouver un \n, c'a metonnerait qu'un fichier comporte une ligne de 1 millions de caractères sans retour a la ligne.
    Même ça ne serait pas génant puisque fgets prend en compte la taille du tableau donc si la ligne est trop grande, la suite sera récupérée au prochain appel.
    C'est bien pour ca que je lui ait dit qu'un tableau aussi grand etait inutile.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  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
    Si tu travailles sur un seul fichier, tu commences pas lire la taille de ce fichier avec des fseek et des ftell je crois, puis tu fais un malloc de la bonne taille (plus un éventuellement) etensuite tu peux travailler comme tu veux.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  8. #8
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par Trap D
    Si tu travailles sur un seul fichier, tu commences pas lire la taille de ce fichier avec des fseek et des ftell je crois, puis tu fais un malloc de la bonne taille (plus un éventuellement) etensuite tu peux travailler comme tu veux.
    Bonne idée mais il dit qu'il vue travailler avec des petits comme de gros fichier, alors is le fichier est vraiment gros, un gors malloc va faire mal je pense.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  9. #9
    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
    C'est tout à fait vrai.
    Dans le cas où le fichier doit être lu en plusieurs il faudra faire attention à la coupure éventuelle. Si je ne me trompe pas, il n'y a pas forcément de retour chariot dans les fichiers HTM (je n'y connais rien en HTML).
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Points : 44
    Points
    44
    Par défaut
    Re,

    Oui car en fait sa serais un projet pour rechercher des mots sur le web en me connectant par une socket
    ( grand nombres de pages donc taille aussi variés )

    Donc c'est pour cela que je recherche la facon dont je suis a peu prés sur de trouver le bon mot.


    VOila merci

  11. #11
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par bonjour69
    Re,

    Oui car en fait sa serais un projet pour rechercher des mots sur le web en me connectant par une socket
    ( grand nombres de pages donc taille aussi variés )

    Donc c'est pour cela que je recherche la facon dont je suis a peu prés sur de trouver le bon mot.


    VOila merci
    Une page html ne depasse jamais quelque ko donc le méthode de Trap D reste la meilleur.
    Tu regarde la taillee et tu malloc en consequence (ce qui a pour but que tu lis tout d'un coup)
    On m'avait parlé d'une autre methode qui consistait a lire petit bout par petit bout mais qu'il fallait revenir en arriere ou un truc dans le genre (si qq'un voit de quoi je veux parler [ce qui metonnerait], qu'il se manifeste et m'explique, merci). Ce qui ne comprenne pas, ben oubliez ma derniere remarque.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  12. #12
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Skyrunner
    Citation Envoyé par bonjour69
    Par contre quand je lui fais chercher par exemple l'occurrence "google" sur la page google.htm ( copie de google.fr ) il ne trouve pas de google si je laisse la taille de mon tableau a 8. Il est nécéssaire que je l'agrandisse( environ 100 ).
    Est-ce du au fait que cela est .htm ?
    Pas du tout, c'est juste que si par exemple dans la source ce soit ecrit comme ca : ici google
    fgets lit d'abord 8 caracteres : ici goo+\0
    Dedans ne se trouve pas google
    Puis lit la suite et google ne s'y trouvent pas non plus.
    Bien vue
    Heuresement que tonton Gégé est là : Lire une ligne d'un fichiers en C

  13. #13
    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
    En cas de coupure des mots, je ne vois pas d'autre méthode que de faire un genre d'automates qui lit les caractères du flux entrant et qui change d'état à chaque bonne lettre du mot recherché et retombe à l'état inital quand la lettre n'est pas bonne.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  14. #14
    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 Skyrunner
    Bonne idée mais il dit qu'il vue travailler avec des petits comme de gros fichier, alors is le fichier est vraiment gros, un gors malloc va faire mal je pense.
    Bof, pourquoi, au pire on se prend un NULL... De toutes façons, ya pas le choix en standard.

    Sinon mmap()...
    Pas de Wi-Fi à la maison : CPL

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    la lib a tonton gege a l'air pas mal du tout mais par contre j'ai des erreurs a la compilations : /

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    C:\Documents and Settings\Bureau\bizu\bizu.cpp(40) : warning C4018: '==' : signed/unsigned mismatch
    C:\Documents and Settings\Bureau\bizu\bizu.cpp(47) : error C2440: '=' : cannot convert from 'void *' to 'char *'
            Conversion from 'void*' to pointer to non-'void' requires an explicit cast
    Error executing cl.exe.
     
    bizu.exe - 1 error(s), 1 warning(s)
    voici la zone d'ereur :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void *tmp = NULL;
                         size <<= 1;
                         tmp = realloc (line, sizeof (*line) * size);
                         if (tmp)
                         {
                            line = tmp; //ligne d'erreur 
                         }

    si je change le en cela ne marche pas non plus


    Voila merci

  16. #16
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par bonjour69
    la lib a tonton gege a l'air pas mal du tout

    Citation Envoyé par bonjour69
    mais par contre j'ai des erreurs a la compilations : /
    normal, tu compile avec un compilateur c++, l'extension de tes fichiers doit être .c en minuscule!

  17. #17
    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 bonjour69
    la lib a tonton gege a l'air pas mal du tout mais par contre j'ai des erreurs a la compilations : /
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    C:\Documents and Settings\Bureau\bizu\bizu.cpp(40) : warning C4018: '==' : signed/unsigned mismatch
    C:\Documents and Settings\Bureau\bizu\bizu.cpp(47) : error C2440: '=' : cannot convert from 'void *' to 'char *'
            Conversion from 'void*' to pointer to non-'void' requires an explicit cast
    Pour compiler en C, l'extension doit être .c et non .cpp, ni .C. Visiblement, tu n'utilises pas le bon compilateur. Je rappelle que C et C++ sont des langages différents qu'il ne faut pas confondre.
    Pas de Wi-Fi à la maison : CPL

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    en effet j'avais bien ce probléme de compilatino et je vous en remercie.

    Donc apparemment si je comprend bien la Lib. La ligne X du fichier est contenu dans la variable "pp_line".

    Mais je ne saisis pas comment recuperer cet variable avec le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int getNextLine (FILE *stream, char **pp_line)
    pour le mettre dans mon main et ainsi faire un :


    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
    void main (void)
    {
     
    	char *p_line = NULL;
    	FILE *f = fopen ("google.txt","rw");
     
     
    	while (getNextLine (f, &p_line) && p_line)
    	{
    		 while( fgets( pp_ligne , sizeof( pp_line  ), f ) )
    			 {
    				  if ( strstr( pp_line, "google")  )
    				  {
    				    printf("mot 'google'\n");
    				  }
    		else printf("non trouve");
    	}
       free (p_line);
       p_line = NULL;
    }
     
    /*FILE*f;


    Voila Merci

  19. #19
    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 bonjour69
    Mais je ne saisis pas comment recuperer cet variable avec le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int getNextLine (FILE *stream, char **pp_line)
    pour le mettre dans mon main et ainsi faire un :
    <...>
    Ne compile pas. Bizarreries ("rw", par exemple...)

    Ceci fonctionne :
    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
     
    #include <stdio.h>
     
    /* le code de Gege ... */
     
    int main(void)
    {
    #define fname "google.htm"
     
        FILE *f = fopen (fname,"r");
     
        if (f != NULL)
        {
            char *p_line = NULL;
     
            while (getNextLine (f, &p_line) == EXIT_SUCCESS && p_line != NULL)
            {
            	printf ("%s\n", p_line);
     
                if ( strstr( p_line, "google")  )
                {
                    printf("mot 'google'\n");
                }
     
                if ( strstr( p_line, "Google")  )
                {
                    printf("mot 'Google'\n");
                }
     
                free (p_line);
                p_line = NULL;
            }
            fclose (f), f = NULL;
        }
        else
        {
            perror(fname);
        }
        return 0;
    }
    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
     
    <html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"><
    title>Google</title><style><!--
    mot 'Google'
    body,td,a,p,.h{font-family:arial,sans-serif;}
    .h{font-size: 20px;}
    .q{color:#0000cc;}
    //-->
    </style>
    <script>
    <!--
    function sf(){document.f.q.focus();}
    function rwt(el,ct,cd,sg){el.href="/url?sa=t&ct="+escape(ct)+"&cd="+escape(cd)+"
    &url="+escape(el.href).replace(/\+/g,"%2B")+"&ei=5GVyQ5rrD7HoaOC-wd8L"+sg;el.onm
    ousedown="";return true;}
    // -->
    </script>
    </head><body bgcolor=#ffffff text=#000000 link=#0000cc vlink=#551a8b alink=#ff00
    00 onLoad=sf() topmargin=3 marginheight=3><center><table border=0 cellspacing=0
    cellpadding=0 width=100%><tr><td align=right nowrap><font size=-1><a href="/url?
    sa=p&pref=ig&pval=2&q=http://www.google.fr/ig%3Fhl%3Dfr%26tab%3Diw%26client%3Dfi
    refox-a%26rls%3Dorg.mozilla:fr-FR:official_s%26q%3D" onmousedown="return rwt(thi
    s,'pro','hppphnu:fr_all','')">Accueil personnalis├®</a></font></td></tr><tr heig
    ht=4><td><img alt="" width=1 height=1></td></tr></table><img src="/intl/fr_fr/im
    ages/logo.gif" width=276 height=110 alt="Google"><br><br>
    mot 'google'
    mot 'Google'
    <form action=/search name=f><script><!--
    function qs(el) {if (window.RegExp && window.encodeURIComponent) {var ue=el.href
    ;var qe=encodeURIComponent(document.f.q.value);if(ue.indexOf("q=")!=-1){el.href=
    ue.replace(new RegExp("q=[^&$]*"),"q="+qe);}else{el.href=ue+"&q="+qe;}}return 1;
    }
    // -->
    </script><table border=0 cellspacing=0 cellpadding=4><tr><td nowrap><font size=-
    1><b>Web</b>&nbsp;&nbsp;&nbsp;&nbsp;<a id=1a class=q href="/imghp?hl=fr&tab=wi&c
    lient=firefox-a&rls=org.mozilla:fr-FR:official_s" onClick="return qs(this);">Ima
    ges</a>&nbsp;&nbsp;&nbsp;&nbsp;<a id=2a class=q href="http://groups.google.fr/gr
    php?hl=fr&tab=wg&client=firefox-a&rls=org.mozilla:fr-FR:official_s" onClick="ret
    urn qs(this);">Groupes</a>&nbsp;&nbsp;&nbsp;&nbsp;<a id=3a class=q href="/dirhp?
    hl=fr&tab=wd&client=firefox-a&rls=org.mozilla:fr-FR:official_s" onClick="return
    qs(this);">Annuaire</a>&nbsp;&nbsp;&nbsp;&nbsp;<a id=4a class=q href="http://new
    s.google.fr/nwshp?hl=fr&tab=wn&client=firefox-a&rls=org.mozilla:fr-FR:official_s
    " onClick="return qs(this);">Actualit├®s</a>&nbsp;&nbsp;&nbsp;&nbsp;<b><a href="
    /intl/fr/options/" class=q>plus&nbsp;&raquo;</a></b></font></td></tr></table><ta
    ble cellspacing=0 cellpadding=0><tr><td width=25%>&nbsp;</td><td align=center><i
    nput type=hidden name=client value="firefox-a"><input type=hidden name=rls value
    ="org.mozilla:fr-FR:official_s"><input type=hidden name=hl value=fr><input maxLe
    ngth=256 size=55 name=q value="" title="Recherche Google"><br><input type=submit
     value="Recherche Google" name=btnG><input type=submit value="J'ai de la chance"
     name=btnI></td><td valign=top nowrap width=25%><font size=-2>&nbsp;&nbsp;<a hre
    f=/advanced_search?hl=fr>Recherche avanc├®e</a><br>&nbsp;&nbsp;<a href=/preferen
    ces?hl=fr>Pr├®f├®rences</a><br>&nbsp;&nbsp;<a href=/language_tools?hl=fr>Outils
    linguistiques</a></font></td></tr><tr><td colspan=3 align=center><font size=-1>R
    echercher dans : <input id=all type=radio name=meta value="" checked><label for=
    all> Web</label><input id=lgr type=radio name=meta value="lr=lang_fr" ><label fo
    r=lgr> Pages francophones</label><input id=cty type=radio name=meta value="cr=co
    untryFR" ><label for=cty>Pages : France</label></font></td></tr></table></form><
    br><font size=-1><font color=#ff0000>Nouveau !</font> LÔÇÖinfo sur votre bureau,
     à la demande. <a href=http://desktop.google.fr onmousedown="return rwt(this,'p
    ro','hppwebdesk:fr_fr','')">Google Desktop</a>.</font><br><br><br><font size=-1>
    <a href=/ads/>Publicit├®</a> - <a href=/services/>Solutions d'entreprise</a> - <
    a href=/intl/fr/about.html>À propos de Google</a> - <a href=http://www.google.c
    om/ncr>Google.com in English</a></font><p><font size=-2>&copy;2005 Google</font>
    </p></center></body></html>
    mot 'google'
    mot 'Google'
    Pas de Wi-Fi à la maison : CPL

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    en effet cela marche impec et je t'en remercie !!

    par contre j'ai l'impression qui rate quelques occurrences car en mettant un compteur j'ai :


    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
    int main(void)
    {
     
    	int i=0;
    	int k=0;
     
    	#define fname "google.htm"
     
        FILE *f = fopen (fname,"r");
     
        if (f != NULL)
        {
            char *p_line = NULL;
     
            while (getNextLine (f, &p_line) == EXIT_SUCCESS && p_line != NULL)
            {
               //printf ("%s\n", p_line);
     
                if ( strstr( p_line, "google")  )
                {
                    printf("mot 'google'\n");
    				i++;
                }
     
                if ( strstr( p_line, "Google")  )
                {
                    printf("mot 'Google'\n");
    				k++;
                }
     
                free (p_line);
                p_line = NULL;
            }
            fclose (f), f = NULL;
        }
        else
        {
            perror(fname);
        }
     
    	printf("dans ce fichier il y a %d google et %d Google\n",i,k);
     
        return 0;
    }
    l'apparition de 6 et 7 google au lieu d'une trentaine . J'ai réessayais avec un fichier texte maison apparemment lorsque plusieurs google sont sur plusieurs lignes il n'en detecte qu'un.. :/


    Voila merci

Discussions similaires

  1. Remplacement d'occurences dans un fichier
    Par kromartien dans le forum C
    Réponses: 8
    Dernier message: 11/06/2007, 23h06
  2. compter les occurences dans un fichier avec fgetc
    Par deathsurfer dans le forum C
    Réponses: 21
    Dernier message: 21/01/2007, 13h44
  3. REmplacer la deuxième occurence dans un fichier
    Par EDrequest dans le forum Langage
    Réponses: 3
    Dernier message: 01/08/2006, 21h34
  4. Occurence dans un fichier
    Par claudesou dans le forum Langage
    Réponses: 4
    Dernier message: 01/05/2006, 18h00
  5. Supprime une occurence dans un fichier
    Par dev7 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 03/02/2006, 14h21

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