Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C][exercices]Strcpy

Plein de caractères bizarres -_-'

Sujet résolu
    9 juin 2007 à 18:10:41

    Bonjour à tous ! J'ai un petit problème, regardez par vous même :
    Image utilisateur

    Il me met plein de signes bizarre, ^^'

    Voilà mon code :

    #include <stdio.h>
    #include <stdlib.h>

    /*Prototypes*/
    char* strcpy(char* copieDeLaChaine, const char* chaineACopier);

    int main()
    {
        /*Initialisation des 2 chaines*/
        char chaineACopier[] = "Salut Fabs";
        char copieDeLaChaine[100];

        /*On affiche les 2 chaines*/
        printf("chaineACopier vaut : %s\n", chaineACopier);
            printf("copieDeLaChaine vaut : %s\n", strcpy(copieDeLaChaine, chaineACopier));
            return 0;
    }

    /*Copie de la chaine*/
    char* strcpy(char* copieDeLaChaine, const char* chaineACopier)
    {
        /*Initialisation*/
        long i;

        /*La boucle pour copier la chaine*/
        do
        {
            copieDeLaChaine[i] = chaineACopier[i];
            i++;
        }while (chaineACopier[i] != '\0');

        return copieDeLaChaine;
    }


    Merci d'avance ;)
    Fabs
    • Partager sur Facebook
    • Partager sur Twitter
      9 juin 2007 à 18:13:19

      Je viens de le mettre désolé ^^' (Juste après que tu aies posté :p , il m'a fallu 2 minutes pour le mettre ! :D )
      • Partager sur Facebook
      • Partager sur Twitter
        9 juin 2007 à 18:21:35

        Salut,

        i n'est pas initialisé...
        De plus, on utilise le type size_t pour parcourir les tableaux.
        • Partager sur Facebook
        • Partager sur Twitter
          9 juin 2007 à 18:30:53

          Et aussi tu n'ajoutes pas le caractère '\0' à la fin...
          • Partager sur Facebook
          • Partager sur Twitter
            9 juin 2007 à 19:55:20

            merci de vos réponses ;)
            Alors juste pour signaler : je n'utilise pas size_t car dans le prototype qu'a utilisé Mateo21 le type est char et le '\0' n'est pas dans initialisation car il se met automatiquement je pense ;) (Mais je l'ai rajouté lors de la copie ^^ )

            Voilà mon code :
            #include <stdio.h>
            #include <stdlib.h>

            /*Prototypes*/
            char* strcpy(char* copieDeLaChaine, const char* chaineACopier);

            int main()
            {
                /*Initialisation des 2 chaines*/
                char chaineACopier[] = "Salut Fabs";
                char copieDeLaChaine[100];

                /*On affiche les 2 chaines*/
                printf("chaineACopier vaut : %s\n", chaineACopier);
                    printf("copieDeLaChaine vaut : %s\n", strcpy(copieDeLaChaine, chaineACopier));
                    return 0;
            }

            /*Copie de la chaine*/
            char* strcpy(char* copieDeLaChaine, const char* chaineACopier)
            {
                /*Initialisation*/
                long i = 0;

                /*La boucle pour copier la chaine*/
                do
                {
                    copieDeLaChaine[i] = chaineACopier[i];
                    i++;
                }while (chaineACopier[i] != '\0');

                copieDeLaChaine[i+1] = '\0';

                return copieDeLaChaine;
            }


            EDIT : J'ai rien dit ! mon problème est ici :
            copieDeLaChaine[i+1] = '\0';

            Merci beaucoup pour vos réponses !
            • Partager sur Facebook
            • Partager sur Twitter
              27 juin 2007 à 16:21:21

              Je comprend pas la raison de cela :
              copieDeLaChaine[i+1] = '\0';


              C'est un do while, donc ce sera exécuté quand la variable vaudra \0..
              Le problème vient du fait que tu n'a pas initialisé ton tableau :

              char copieDeLaChaine[100] = {0};


              Les caractères bizarres qu'il y a après sont des "restes" des variables stoquées avant par les autres programmes

              ;-)
              • Partager sur Facebook
              • Partager sur Twitter

              [C][exercices]Strcpy

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown