Partage
  • Partager sur Facebook
  • Partager sur Twitter

char , char* ? argggh!

    13 juin 2006 à 21:43:46

    Salut a tous,
    je ne comprend rien au pointeur ....
    Comment mettre plus d'une lettre dans un char * ?

    char *txtlogin = "";
    ........
    txtlogin=txtlogin+"a";


    erreur: invalid operands of types ‘char*’ and ‘const char [2]’ to binary ‘operator+’
    • Partager sur Facebook
    • Partager sur Twitter
      13 juin 2006 à 21:46:42

      Pour concaténer deux chaines:
      char* strcat(char* chaine1, const char* chaine2);
      • Partager sur Facebook
      • Partager sur Twitter
        13 juin 2006 à 21:46:56

        Pour mettre plus d'une lettre il faut utiliser un tableau !
        Tu as lu les chaines de cractères ou tu en est aux pointeurs ?
        Si c'est la seconde solution attends d'arriver au cours sur les chaines de caractères m@téo t'expliquera tout !
        ++
        • Partager sur Facebook
        • Partager sur Twitter
          13 juin 2006 à 21:48:23

          'a' = caractère a ;
          "a" = chaîne de caractère composée de 'a', '\0' ;

          char* s = pointeur de type char ;
          char t[SIZE] = tableau de caractères ;
          • Partager sur Facebook
          • Partager sur Twitter
            13 juin 2006 à 21:49:05

            Citation : XT95


            je ne comprend rien au pointeur ....
            Comment mettre plus d'une lettre dans un char * ?


            char * est un type pointeur sur char.
            char *p est un pointeur sur char
            char s[16] est un tableau de char
            Un pointeur doit être initialisé avant d'être utilisé.

            http://mapage.noos.fr/emdel/notes.htm#pointeurs
            • Partager sur Facebook
            • Partager sur Twitter
            Music only !
              13 juin 2006 à 21:52:00

              Dark-Side j'ai une facon un peu bizzard d'apprendre, je survole les chapitres et j'essais de comprendre en tapant et en voyant les erreurs j'apprend. (en dark basic prennais plein de bout d'exemple et je les assemblaient :p) C'est peut etre une drole de facon d'apprendre mais la je crois que je vais revoir le cour des constantes et des pointeurs :D !
              • Partager sur Facebook
              • Partager sur Twitter
                13 juin 2006 à 22:25:21

                Les pointeurs c'est typiquement la chose qu'il ne faut PAS survoler pour un débutant...
                • Partager sur Facebook
                • Partager sur Twitter
                  14 juin 2006 à 13:05:36

                  Une question :
                  J'ai un tableau:
                  char nom[]="baba";
                  et un autre tableau
                  char name[20]="";

                  Pour mettre le contenu de nom[] dans name[], comment doit on faire?Quelle est la facon la plus commune (et donc la plus simple)?
                  (est ce que vous utilisez une fonction comme strcpy quand vous devez attribuer les valeurs d'un tableau de char dans un autre?)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 juin 2006 à 13:09:10

                    Il y a une fonction qui te le permet mais laquelle? ^^
                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 juin 2006 à 13:09:26

                      EDIT: Grilled !
                      Et pour ton tableau nom pense à mettre une taille à ton tableau et à ne pas laisser vide : char nom[]="baba";
                      ;)
                      ++
                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 juin 2006 à 13:42:36

                        Citation : ReDnAxE


                        char nom[]="baba";
                        char name[20]="";


                        Pour mettre le contenu de nom[] dans name[], comment doit on faire?<...> utilisez une fonction comme strcpy<...>


                        Oui, on utilise cette fonction pour copier une chaine dans une tableau de char.
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Music only !
                          14 juin 2006 à 14:06:57

                          ok merci. J'ai quelques autres problemes avec ca comme par exemple faire une fonction qui retourne un char, j' y arrive pas encore, mais je reposterais si j'ai des question.
                          C'est marrant c'est quand meme des trucs ou j'ai aucun probleme en C#, ca doit etre un langage de plus haut niveau d'apres ce que je comprends!

                          ah voila mon probleme :
                          j'ai une fonction:
                          char piocherMot()
                          {
                                  char motPioche[100]= "";
                                  char motOriginal[100]="salut";

                                  strcpy(motPioche, motOriginal);

                                  return motPioche;
                          }

                          que j'appele avec:
                                  printf("Le mot est : %s\n", piocherMot());

                          et ca m'affiche:
                          le mot est :

                          Comment ca se fait que ca affiche rien ???
                          • Partager sur Facebook
                          • Partager sur Twitter
                            14 juin 2006 à 15:32:11

                            Citation : ReDnAxE

                            C'est marrant c'est quand meme des trucs ou j'ai aucun probleme en C#, ca doit etre un langage de plus haut niveau d'apres ce que je comprends!


                            C# possède un type dédié qui représente les chaînes de caractères pas C (C++ en possède un via la STL).
                            • Partager sur Facebook
                            • Partager sur Twitter
                              14 juin 2006 à 15:40:33

                              ReDnAxE : Tu retournes un pointeur sur la première lettre de motPioche et pas la chaine elle-même (c'est impossible de retourner une chaine !). De plus ta fonction est censé retourner un char et pas un pointeur sur char !

                              La solution c'est tu mets ton printf à l'intérieur de ta fonction et tu retournes rien (type void), pour ton exemple ça change rien !

                              Edit : ou alor essaye avec char *piocherMot() { /*ta foncion*/ } mais je ne pense pas que ça marche !
                              • Partager sur Facebook
                              • Partager sur Twitter
                                14 juin 2006 à 15:53:45

                                Citation : ReDnAxE


                                char piocherMot()
                                {
                                        char motPioche[100]= "";
                                        char motOriginal[100]="salut";

                                        strcpy(motPioche, motOriginal);

                                        return motPioche;
                                }



                                Même en corrigeant pour avoir un retour de type char * au lieu de char, ce code serait faux.

                                En effet, même si c'est techniquement possible, retourner l'adresse d'une variable locale n'a aucun sens, puisque celle-ci n'existe plus une fois la fonction terminée.

                                La solution simple est de passer l'adresse d'un tableau de destination (et sa taille pour contrôles).

                                void piocherMot(char motPioche[], size_t size)
                                {
                                   char motOriginal[]="salut";

                                   motPioche[0] = 0;
                                   strncat(motPioche, motOriginal, size - 1);
                                }

                                • Partager sur Facebook
                                • Partager sur Twitter
                                Music only !
                                  14 juin 2006 à 16:00:38

                                  Non, en effet, char *piocherMot() marche pas.
                                  oui, j'ai finalement mis un pointeur sur le tableau de char dans les parametres de la fonction, apparement, alors, on peut pas trop faire autrement...
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    14 juin 2006 à 16:10:55

                                    Citation : ReDnAxE

                                    Non, en effet, char *piocherMot() marche pas.
                                    oui, j'ai finalement mis un pointeur sur le tableau de char dans les parametres de la fonction, apparement, alors, on peut pas trop faire autrement...


                                    Il y une autre solution, mais on en reparlera quand tu auras vu malloc()...
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Music only !
                                      14 juin 2006 à 16:40:25

                                      :lol: j'ai vu... mais trop rapidement lol j'y repasse la!

                                      edit : Ce qui me fait peur dans la programmation aussi, c'est quand par exemple la, je viens d'utiliser les fonctions srand() et rand() en ayant oublié d'ajouter la librairie #include <time.h> ... et ca marchait...et ca ca m'fout la pétoche!! :lol:
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      char , char* ? argggh!

                                      × 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