Contenu | Rechercher | Menus

Annonce

Ubuntu-fr.org recrute toujours de nouveaux modérateurs, avec de l'expérience.

Ubuntu 16.04 LTS
Réservez vos DVD et clé USB Ubuntu-fr (premières livraisons mi-mai)

Si vous avez des soucis pour rester connecté, déconnectez vous et reconnectez vous depuis ce lien en cochant le case
Me connecter automatiquement lors de mes prochaines visites.

M.A.J. en cours du forum possibilité de bug, nous faisons le maximum pour les résoudre au plus vite

#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