Copie d'une chaine dans une autre

NG007 Messages postés 25 Statut Membre -  
NG007 Messages postés 25 Statut Membre -
Bonjour,
qqn pourrait m'aider sur cet exo:j'ecris une fonction permettant de copier une chaine dans l'autre.Je l'ai fait mais rien na s'affiche sur l'ecran.
le voici:
int my_putchar(char c)
  {
    write(1, &c, 1);  
  }
  
  void  *malloc( int  size);
  
 int  my_strlen(char *src)
  {
       int i=0;
     
       while(src[i]!='\0')
             i++;   
      return (i);
 
 
  }
char *my_strcpy(char *dest, char *src)
 {
       int i=0;
   
      while(src[i] !='\0')
        {
           dest[i] = src[i];
           i++;
        }
       
       return(dest);
        
 }

 int main( )
 {
    char    *src;
    char   *dest;
    
    src="epitech !\n";
    dest=malloc((my_strlen( src)+1 ) + sizeof (*dest));
    strcpy(src,dest );
    printf("%s",*my_strcpy(src,dest));
 }
A voir également:

1 réponse

fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Salut,
Il y a pas mal de petites erreurs.
Tout d'abord pourquoi déclarer le prototype de malloc ? Autant inclure #include <stdlib.h>
Pourquoi utiliser strcpy alors que tu te crées une fonction my_strcpy ?
D'ailleurs dans ta fonction my_strcpy n'oublie pas l'ajout d'un \0 pour délimiter la chaîne dest.
Pour l'allocation de dest : my_strlen(src)+1 suffit. Le sizeof(*src) n'apporte rien.
Dans ta fonction main(), tu t'es trompé dans l'ordre des arguments lors de ton appel à la fonction my_strcpy. Il faut passer dest en premier (selon le prototype de ta fonction).
N'oublie pas non plus de libérer le malloc avec un petit free.
Et enfin, il faut mettre un return 0; à la fin.
Cdlt
2
NG007 Messages postés 25 Statut Membre 4
 
ok fiddy encore une fois merci beaucoup pour ton coup de main.
0