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". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#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’:(
hmm:/

#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) 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, à 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

Haut de page ↑