didier1809 ${citation_perso} |
Code :
- #include <pthread.h>
- #include <stdio.h>
- #include <unistd.h>
- const int NB_THREAD = 1;
- char *mot;
- int trouve=0;
- long int taille;
- void *LireFichier (void *fich)
- {
- char *buf;
- int tt,rc;
- buf = (char *)malloc(sizeof(char) * taille);
- while( rc = fread(buf,sizeof(char),taille,fich) )
- {
- if(strncmp(buf,mot,taille)==0)
- {
- trouve++;
- }
- else
- {
- if(!rc)
- {
- fseek(fich , -(taille-1) , SEEK_CUR);
- }
- }
- }
- pthread_exit(NULL);
- }
- int main (int argc, char *argv[])
- {
- int i,rc,status;
- char mot1[25];
- FILE *fichier;
- if (argc != 2)
- {
- printf("syntaxe : %s nom_fichier\n",argv[0]);
- exit (-1);
- }
- fichier = fopen(argv[1],"r" );
- if( fichier == (FILE *) NULL)
- {
- perror(argv[1]);
- exit(-1);
- }
- puts("Quel mot a chercher ?" );
- scanf("%s",&mot1);
- taille = strlen(mot1);
- mot = (char *) malloc(sizeof(char) * taille);
- strcpy(mot,mot1);
- pthread_t threads[NB_THREAD];
- for (i=0;i<NB_THREAD;i++)
- {
- rc = pthread_create(&threads[i] , NULL , LireFichier , (void *)fichier );
- if (rc)
- {
- perror("Erreur de creation du thread " );
- exit (-1);
- }
- }
- //boucle d'attente de terminaison des threads
- for (i=0;i<NB_THREAD;i++)
- {
- rc = pthread_join(threads[i],(void *)status);
- }
- puts(" ** Recherche terminee ** " );
- if(trouve != 0)
- printf("'%s' trouve %d fois\n",mot1,trouve);
- else
- printf("'%s' non trouve dans '%s'\n",mot1,argv[1]);
- pthread_exit(NULL);
- fclose(fichier);
- return 0;
- }
|
pas taper ps : regarde pas à la logique du code ---------------
.
|