Partage
  • Partager sur Facebook
  • Partager sur Twitter

Concacaténer une chaine Char et un long

    8 mars 2006 à 17:25:47

    Tout est dans le titre.

    Voilà mon code, je cherche le chemin d'accès vers le fichier dont l'id est demandé à l'utilisateur..En gros ça compile mais au lieu de m'écrire "chemine = data/carte1.dat" j'ai droit à "chemin=data/carte.dat"


    #include <string.h>

    long id = 0;
    char chemin[] = "data/carte";
    printf("Quelle est l'id du fichier à ouvrir?");
    scanf("%ld"‚&id);

    strcat(chemin‚id);
    strcat(chemin‚".dat");
    printf("%s"‚chemin);
    getch();
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      8 mars 2006 à 17:45:14

      Parce qu'il faut d'abord convertir le long en char* avec un sprintf ^^

      char s_id[10];
      sprintf (s_id,"%ld", id);
      strcat (chemin, s_id);
      ...
      • Partager sur Facebook
      • Partager sur Twitter
        8 mars 2006 à 17:46:35

        Tiens tiens..c'était donc ça..Voilà une fonction bien amusante ^^
        Merci

        EDIT:
        Juste une remarque par contre, il me dit "passing arg 2 of "sprintf" makes pointer from integer without a cast".
        Et pareil pour strcat...
        Ca signifie quoi exactement ? :p
        • Partager sur Facebook
        • Partager sur Twitter
          9 mars 2006 à 19:43:20

          Hum..Tout compte fait ça ne marche pas si bien ..
          Le code est bien compilé mais dès que j'ai entré l'id ça plante...
          • Partager sur Facebook
          • Partager sur Twitter
            10 mars 2006 à 7:23:18

            Bah faut réflechir un peu :)
            quand tu alloues chemin, il allouse juste assez de place pour le chemin "data/carte", ensuite tu essayes de rajouter une chaîne après donc en dehors de l'espace alloué
            • Partager sur Facebook
            • Partager sur Twitter
              10 mars 2006 à 10:09:20

              Citation : gabi

              Tiens tiens..c'était donc ça..Voilà une fonction bien amusante ^^


              ... mais peut être dangereuse. S'assurer que le tableau de destination est suffisamment grand. En C99, snprintf() bien utilisé est plus sûr.

              Citation : gabi


              Juste une remarque par contre, il me dit "passing arg 2 of "sprintf" makes pointer from integer without a cast".
              Et pareil pour strcat...
              Ca signifie quoi exactement ? :p


              Si on ne fourni pas de prototypes aux fonctions, le C suppose que le paramètre est de type int, ce qui est faux. Il faut fournir les prototypes aux fonctions, sinon, le comportement est indéfini.

              As-tu inclus <stdio.h> ?
              As-tu inclus <string.h> ?

              • Partager sur Facebook
              • Partager sur Twitter
              Music only !
                10 mars 2006 à 12:15:08

                Si je puis me permettre les gars, quitte à utiliser sprintf à un moment pourquoi utiliser une variable intermédiaire et pas faire la concaténation DANS le sprintf ?

                sprintf(chemin,"data/carte%d.dat",id);
                ou
                sprintf(chemin,"%s%d.dat",chemin,id); si tu continues à vouloir l'initialiser au préalable

                Hein ?
                • Partager sur Facebook
                • Partager sur Twitter

                Concacaténer une chaine Char et un long

                × 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