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
|
#include <stdio.h>
#include <string.h>
#define MAXLINESIZE 5000
int get_pos(char s[],char t[],int i) ;
int get_index(char s[],char t[],int i) ;
main(int argc, char *argv[]) {
int c =0 ;
char res[MAXLINESIZE] ;
char *to_cmp=argv[1] ; /* la valeur a comparer se déforme */
while (fgets(res,MAXLINESIZE,stdin) != NULL ) {
c++ ;
/*
* printf("%s\n",res)
* printf("%s\n",argv[1]) La valeur de argv[1] se déforme lexicographiquement */
if (strstr(res, to_cmp)) {
int i=0 ;
int idx ;
idx=get_pos(res,to_cmp,i) ;
printf("pattern present at index: %d\n",idx) ;
}
}
}
int get_pos(char s[],char t[],int i) {
int bool = 0 ;
for( ; *s != *t ; i++,*s++) {
; /* sauter les lettres non inclus dans le motif */
}
bool = get_index(s,t,i) ;
return i ;
}
int get_index(char s[],char t[],int i) {
int c;
*s=s[i] ; /* pb ? le pointeur est initialiser a l'intérieur de la fonction */
*t= t[i] ; /* pb ? le pointeur est initialiser a l'intérieur de la fonction */
for( c=0 ; *s == *t ; c++,*s++,*t++) {
if ((strlen(t)) == c+1) {
return c ; /* vérification si le mot est bien entièrement correspondant */
}
}
} |