#1 Le 14/04/2006, à 12:06
- tomtom75
probleme avec La fonction strlen de "string.h" ....
boujour, voila j'ai un probleme avec la fonction STRLEN si vous pouvez m'aider sa serait sympa...
terminal:
thomas2@tomubuntu:~/tp/grep$ gcc grep.c lib_grep.o
grep.c: In function ‘main’:
grep.c:34: attention : incompatible implicit declaration of built-in function ‘strlen’:(
:/
#2 Le 14/04/2006, à 12:14
- neofungamer
Re : probleme avec La fonction strlen de "string.h" ....
Est ce que tu peux nous paster ton code?
#3 Le 14/04/2006, à 12:24
- tomtom75
Re : probleme avec La fonction strlen de "string.h" ....
dans le cadre de mon apprentisage j'ai refais la fonction grep, sur fedora il n'y a aucun pb sa fonctionne nickel mais chez moi sous ubuntu il me trouve pas la fonction strlen:
1) grep.c :
# include <stdio.h>
# define M 300
/***************** PROTOTYPES ***********************/
int lirechaine (char *t,int limite);
int indexe (char *t,char *s);
/***************PROGRAMME PRINCIPAL******************/
int main(int argc, char *argv[])
{
char t[M];
char s[M];
int l,lm; /* contient la longueur des arguments */
int exp1,exp2; /*compteur d'occurence */
int ligne; /* numero de la ligne */
int x,z; /* position anterieur au pointeur */
int i,j,k,c,d,e,f,y;
i=c=d=y=0;
if(argc != 3){ /*nombres d'arguments 2+commande*/
fprintf(stderr,"Il faut 2 arguments a la commande\n\n");
return -1;
}
printf("\nCe programme affiche les lignes d'un fichier contenant une chaîne de caractères particulière\n\n");
l = strlen(argv[1]); /* <----------------------------------------------------------------ICI */
/*calcul la longueur des arguments et mais la valeur dans la variable correspondante*/
lm= strlen(argv[2]); /* <----------------------------------------------------------------ICI */
ligne=0;
while((d=lirechaine(t,M-1))>0) /* (1) lire jusqu'a la fin du fichier */
{
ligne++;
e=f=z=x=exp1=exp2=0; //exp et exp2 compteur d'occurrence
while(e!=-1 || f!=-1) /* (2) */
{ /*si l'une des deux occurences existe alors un compteur est incrémenté pour chacune des occurences; les index x et z sauvergarde la position antérieur du pointeur a chaque tour de boucle pour revenir à la meme position au retour */
e=indexe(t+z,argv[1]);
f=indexe(t+x,argv[2]); //position antérieur du pointeur a chaque tour de boucle pour revenir à //la meme position au retour.
if(f!=-1){exp2++;x+=f+lm;}
if(e!=-1){exp1++;z+=e+l;}
y+=exp1+exp2; //nombres d'occurences totales
} /* (2) */
if(exp1!=0 || exp2!=0)
{printf("%d\t %s\n\t\t\t\t\t %s=%d\n\t\t\t\t\t %s=%d\n",ligne,t,argv[1],exp1,argv[2],exp2);}
} /* (1) */
if (y==0)
{printf("Le programme n'a trouve aucune occurrence\n\n");}
} /* fin main */
================================================================
2) lib_grep.C
#include <stdio.h>
#define M 255
/********* FONCTION LIRECHAINE***************/
int lirechaine (char *t,int limite)
{
int i,c;
i=c=0;
c=getchar();
while (c!='\n'&& c!=EOF && i!=limite-1)
{
t[i]=c;
i++;
c=getchar();
}
t[i]='\0';
if(c=='\n' && i==0) i=1;
return i;
}
/********* FONCTION INDEX*********************/
/* la fonction index retourne un entier qui représente l'index de la chaîne s dans t ou -1 sinon les paramètres ne sont pas modifiés */
int indexe (char *t,char *s)
{
int i,j,k,code;
i=k=j=0;
while (t[i]!='\0')
{
k=i; //sauvergarder valeur de i
j=0;
while (s[j] == t[k] && s[j] != '\0') //on sort si s[j] différent de t[k] ou on atteint la fin de s
{k++;j++;}
if(s[j] == '\0') return i; // l'occurence a été trouvée (on a atteint la fin de s)
i++;
}
return -1; //pas d'occurence
}
#4 Le 14/04/2006, à 12:32
- Eldime
Re : probleme avec La fonction strlen de "string.h" ....
Salut,
je pense que tu dois mettre au début de ton fichier
#include <string.h>
et ca devrait marcher tout seul.
Si tu fais man strlen, tu verras quels fichiers doivent être inclus pour l'utiliser
+
Hors ligne
#5 Le 14/04/2006, à 12:40
- tomtom75
Re : probleme avec La fonction strlen de "string.h" ....
C bon sa fonctionne merci ELDIME mon erreur etait assez stupide mais enfin bon il faut bien en faire pour apprendre..... Merci et a bientot
#6 Le 15/04/2006, à 00:02
- neofungamer
Re : probleme avec La fonction strlen de "string.h" ....
Elle est pas stupide ton erreur, c'est de l'oubli , rien de méchant