Partage
  • Partager sur Facebook
  • Partager sur Twitter

Petit problème avec un exercice

Je suis un véritable ZérO et fière de l'être

16 avril 2006 à 1:41:43

Salut à tous,

Voila, j'ai un petit problème avec un exercice.
Je suis dans le chapitre concernant le type " char "(c'est pour contenir une seul lettre).
L'exercice consiste a faire la même chose que la fonction "
char* strcpy(char* copieDeLaChaine, const char* chaineACopier);
" mais sans utiliser la lybrairie "#incluse <string.h>".

Bon si vous ne comprenez pas se que je vien de dire, je vous donne l'URL de l'exercice ( il se trouve tout en bas ): L'exercice

Bon j'ai commencer mais je bloque, car je ne sais plus ou pas ( :( un véritable ZérO :( ) comment un fait une copie d'une variable. J'ai esseillez avec " chaine1 = chaine2 " mais c'est pas sa. Donc si quelqu'un peux m'aider se serrai hyper sympa.

Je vous remercie beaucoup.

Je suis un ZérO et vraiment fière de l'être
Image utilisateur
#include <stdio.h>
#include <stdlib.h>

int copieChaine(const char* chaine1, const char* chaine2);

int main(int argc, char *argv[])
{
    char chaine1[] = "Salut", chaine2[100] = {0};
   
    copieTableau(chaine2, *chaine1);   
   
  system("PAUSE");     
  return 0;
}

int copieChaine(const char* chaine1, const char* chaine2)
{
    *chaine1 = chaine2;
   
}


  • Partager sur Facebook
  • Partager sur Twitter
16 avril 2006 à 2:08:20

Premièrement tu aurais pu mettre code type="c" au lieu de autre ^^

Sinon juste un petit truc:
int copieChaine(const char* chaine1, const char* chaine2);

chaine1 = la chaine qui contiendra la copie. Pourquoi elle est constante?

Sinon ça serais comme ceci:
chaine1 = chaine2;
ou encore si ça ne marche pas et bien copie 1 à une les caractère :)

Piste:

char caractere = 0;
for(int i = 0; caractere != '\0'; i++)
{
    //A completer
}
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
16 avril 2006 à 2:10:04

aller un autre indice pompé sur le cours du SDZ :)

Image utilisateur

et oublie pas que ta fonction est de type "int". ca veut dire qu'elle doit retourner un int !
  • Partager sur Facebook
  • Partager sur Twitter
16 avril 2006 à 20:24:28

Je vous remercie tous de vos réponse.

Je vous tiendrais au courant de mon avancement.

Sylvainvh
  • Partager sur Facebook
  • Partager sur Twitter
17 avril 2006 à 18:11:12

Bonjour à tous!

Alors voilà mon problème :
je suis en train de recoder la fonction strcpy, j'ai réussi à la faire, mais avec la manière simple, c'est-à-dire :

void cpChaine(char chaine2[], const char chaine[])
{
   chaine2 = chaine;

   printf("original : %s\ncopie : %s\n", chaine, chaine2);   
}


Ce qui me donne :

original : salut
copie : salut



Je voulais savoir si justement ce n'est pas trop simple comme méthode, et s'il n'est pas plus fiable de faire une copie des caractères de la chaîne un par un.

J'essaye donc ceci :

void cpChaine(char chaine2[], const char chaine[])
{
   long i = 0;
   chaine2 = chaine;
   char cara1 = '0', cara2 = '0';
   do
   {
     cara1 = chaine[i];
     cara2 = chaine2[i];
     cara2 = cara1;
     i++;
   }
   while(cara1 != '\0');
   printf("original : %s\ncopie : %s\n", chaine, chaine2);   
}


Ce qui me donne :

original : salut
copie : >U%w<"


Et la je ne comprend pas... Aidez-moi svp :( Merci d'avance!

Ah, petite précision au cas où, voici mon main :

int main(int argc, char *argv[])
{
  char nom[50], chaine[50]
  printf("Votre nom : ");
  scanf("%s", nom);
  cpChaine(chaine, nom);
  system("PAUSE");     
  return 0;
}
  • Partager sur Facebook
  • Partager sur Twitter
17 avril 2006 à 18:16:55


void cpChaine(char chaine2[], const char chaine[])
{
   long i = 0;
   chaine2 = chaine;
   char cara1 = '0', cara2 = '0';
   do
   {
     cara1 = chaine[i];
     cara2 = chaine2[i];
     cara2 = cara1;
     i++;
   }
   while(cara1 != '\0');
   printf("original : %s\ncopie : %s\n", chaine, chaine2);   
}

as tu remarqué ceci:
cara1 = chaine[i];
cara2 = chaine2[i];
cara2 = cara1;
Autrment dit tu ne copie pas la chaien dans lautre tu utilise des variable autre (même pas nécéssaires en passant ^^) et tu ne met même pas l'autre valeur dedans ^^

la manière à laquelle je pensait:

for(int i = 0; chaine[i] != '\0'; i++)
    chaine2[i] = chaine[1];


Tout simplement
  • Partager sur Facebook
  • Partager sur Twitter
17 avril 2006 à 19:14:03

Salut kewzhin, pour ton recode de strcpy, tu peux faire:

int my_strcpy(char dest[], char src[])
{
  int i;

  i = 0;
  while (src[i] != '\0')
    {
      dest[i] = src[i];
      i++;
    }
  dest[i] = '\0';
  printf("source : %s\ndest : %s\n", src, dest);
}

Le dest[i] = '\0' a la fin de ta boucle c'est pour arreter correctement ta chaine de carractere, pour que lorsque tu l'affiches tu n'ai pas de carracteres bizards...
  • Partager sur Facebook
  • Partager sur Twitter