Fonction qui retourne l'adresse

Fermé
joujou98 - Modifié le 29 nov. 2018 à 22:11
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 30 nov. 2018 à 13:42
Bonjour,

on nous demande de créer une fonction qui retourne l'adresse de la dernière occurence de la chaine p dans la chaine s, NULL si p n'apparait pas dans s. char* strstr(char* s,char* p)
et void strndel(char* s,int n,int i) qui supprime n caracteres à partir de la position i

void strndel(char *s,int n, int i)
{
    char *tmp ,*k,*q;
     int len_s=strlen(s);
     tmp=malloc(len_s  +1 );
     q=malloc(n+1);
      k=s;
      if(tmp)
     {
         strncpy(tmp,s,i);
         k+=i+n ;
         strcpy(tmp+i,k+i+n);
     }

     printf("la chaine apres la supression est %s ",s[i]);

}



mon essaie mais ça marche pas !
Configuration: Windows / Firefox 63.0


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

1 réponse

[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
30 nov. 2018 à 13:42
Salut joujou98,

Pour
void strndel(char *s,int n, int i)
, tu n'as pas besoin de faire de
malloc()
et surtout pas deux fois sans rien libérer, et il te suffit de faire un seul
strcpy()
à mon sens.

Réfléchis au problème avec une feuille et un crayon et une chaîne simple.

Par exemple
'v','o','i','t','u','r','e','\0'
que tu transformes en
'v','o','i','e','\0'
...

Dal
0