Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1 Le 14/04/2006, à 13: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’:(
hmm:/

#2 Le 14/04/2006, à 13: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, à 13: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) smile 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) smile 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, à 13: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, à 13: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, à 01: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

Haut de page ↑