Chaine de caractere

Sabetodo Messages postés 127 Statut Membre -  
Sabetodo Messages postés 127 Statut Membre -
Bonjour,
salut les gars.Je voudrais savoir comment est-ce qu'on copie n d'1 chaine dans une autre.s'il y a un exemple sur lequel je pourrais me baser, cela serait mieux.
A voir également:

5 réponses

papymucho Messages postés 146 Statut Membre 220
 
Salut,

Si tu donnais au passage le language que tu utilises, je pense que ça pourrait aider aussi !
0
Sabetodo Messages postés 127 Statut Membre 3
 
je programme en C.
0
papymucho Messages postés 146 Statut Membre 220
 
Une recherche qui a pris 4 secondes sur google m'a permis de trouver cela :

https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/15765-les-chaines-de-caracteres

Regarde chapitre manipulation des chaînes ou autre... D'ailleurs si tu programmes en c, je te conseil de lire le tuto intégralement.

Cordialement.
0
Sabetodo Messages postés 127 Statut Membre 3
 
merci pour ton aide.je viens d'y jetter un coup d'oeil et je trouve cela interessant. Mais mon exo ne marche toujours pas.il affiche un segmentation fault .en fait je veux ecrire une fonction qui copie n caracteres d'une chaine dans une autre. La chaine de destination aura deja la memoire suffisante pour copier la chaine. Ajouter '\0' si n > à la longueur de la chaine.Ne pas ajouter '\0' si n < a la longueur de la chaine (car dest n'est pas cense pouvoir contenir plus de n octets)
Elle devra être prototypée de la façon suivante :
char *my_strncpy(char *dest, char *src, int n); voici mon code.

int  my_strlen(char *src)
  {
       int i=0;
     
       while( src[ i ] != '\0' )
             i++;   
      return (i);

  }
  
 char *my_strncpy(char *dest, char *src, int n)
  {  
      int i;

      while(src[i]  !='\0')
        {
             dest[i] = src[i];
             i++;
         }    
      if( n>strlen(src))
           {
              dest[i] ='\0';
           }
           
         return(dest);
        
   }
   
   
 int main( void )
   { 
        int  n = 10;
       char src[ ] = "epitech";
       char dest[125]  = "****";

       printf("%s",my_strncpy(src,dest,n));
     
   }
   
   
0
papymucho Messages postés 146 Statut Membre 220
 
Tu manques trop de rigueur, je ne peux pas t'aider... quelques indices, car je n'ai plus d'ide d'installé pour vérifier :

Dans ton main

printf("%s",my_strncpy(src,dest,n));

puis dans ta fonction....

char *my_strncpy(char *dest, char *src, int n)

tu t'es pas planté dans l'ordre des arguments que tu envoies... src et dest...

Ensuite tjours dans ton main.... printf("%s",my_strncpy(src,dest,n));
Il te manquerais pas le "&" davant my_strncpy?!

Puis retour dans ta fonction *my_strncpy.... Si tu initialisais i à 0 ça ne lui ferait pas de mal ;-)

Bon courage, je passe la main :p
Cordialement.
0
Sabetodo Messages postés 127 Statut Membre 3
 
Mais t'es malade ou koi? depuis quand on met & dans un printf pour afficher une chaine?je t'en prie va revoir tes cours. Et en plus, je t'ai pas demande de m'aider.si tu veux, tu m'aide, sinon je m'en fous.
si je suis sur ce forum, c'est parce que j'ai besoin d'aide comme tout le monde, nul n'est parfait mon gars.
j'essaie toujours de faire mon mieux.
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Salut,
Dans ta fonction my_strncpy, c'est dommage d'utiliser strlen alors que tu t'es fait une jolie fonction my_strlen.
Attention à ta fonction m_strncpy, elle ne reproduit pas exactement le comportement de strncpy. La fonction doit remplir de 0 la chaîne dest si la chaîne source est inférieure à n.
Tu as également oublié d'initialiser i à 0 dans my_strncpy.
Dans la fonction main(), en appelant la fonction my_strncpy tu t'es trompé dans l'ordre des paramètres (inversion de dest et src).
N'oublie pas d'ajouter "return 0;" à la fin de ton programme.

Ca devrait mieux marcher.
Cdlt
0
Sabetodo Messages postés 127 Statut Membre 3
 
merci fiddy pour ton aide, ca marche tout a fait maintenamt.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
papymucho Messages postés 146 Statut Membre 220
 
Ah oui en effet, ça t'aurait affiché l'adresse mémoire et non la valeur que te retournait ta fonction... Quoi qu'il en soit... bon courage :p
0