Recherche opérateur C : 1 + 1 = 11 et non 2.

Matthieu57 Messages postés 49 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je cherche l'opérateur pour ajouter un chiffre et non faire un addition.

a = 5
b = 7

a + b = 57
et non 12

Merci

--
(28)+
Configuration: Un vieux P4 avec Linux ubuntu

7 réponses

  1. BadGuitarist Messages postés 373 Statut Membre 27
     
    Bonsoir Matthieu57,

    N'ayant plus fait de C depuis quelque temps, donc pour t'aider plus rapidement, as-tu cherché :
    concaténation C sur google ?

    Je pense que tu devrais y trouver un bout de code tout fait.
    0
    1. Matthieu57 Messages postés 49 Statut Membre
       
      Concaténation, merci, voila le mot que je cherchais.
      0
  2. scriptiz Messages postés 1494 Statut Membre 425
     
    strcat("5","7");


    Exemple complet :
    /* strcat example */
    #include <stdio.h>
    #include <string.h>
    
    int main ()
    {
      char str[80];
      strcpy (str,"these ");
      strcat (str,"strings ");
      strcat (str,"are ");
      strcat (str,"concatenated.");
      puts (str);
      return 0;
    }


    Référence : http://www.cplusplus.com/reference/cstring/strcat/
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      strcat("5","7");
      Utilisé comme ça, le compilateur n'en voudra pas puisque le premier argument est un pointeur constant.
      Par contre l'exemple est correct. Bien que strcpy ne soit plus conseillé, ainsi que strcat.

      Cdlt,
      0
      1. Utilisateur anonyme > fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention  
         
        C'est bien à cause des buffer overflows ?
        0
    2. Matthieu57 Messages postés 49 Statut Membre
       
      Merci, je vais esseyer ça.
      0
    3. Matthieu57 Messages postés 49 Statut Membre
       
      Merci au deux
      0
    4. Matthieu57 Messages postés 49 Statut Membre
       
      Effacer
      0
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    Il n'y a pas d'opérateurs en C pour que 1+1=11.
    Pour faire ceci, néanmoins tu peux utiliser 1*10+1.

    Sinon, tu peux travailler en chaîne de caractères et utiliser la concaténation avec strcat (ou strncat).
    Tu peux voir l'exemple de scriptiz.

    Cdlt,
    0
    1. Matthieu57 Messages postés 49 Statut Membre
       
      Donc, je devrais convertir x et y en chaine avant et ensuite faire une concaténation pour ensuite les reconvertir.
      x=1
      y=1

      ''Pour faire ceci, néanmoins tu peux utiliser 1*10+1. ''
      Je comprend pas trop, 1 fois dix plus 1? Je ne veux pas faire 11?
      Mais si j'ai pas compris, un exemple pour :

      x = 1
      y = 2

      x + y = 12
      et non 3

      Merci

      0
      1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > Matthieu57 Messages postés 49 Statut Membre
         
        Non c'est juste que cela dépend du type de départ.
        Si tu travailles en entier, tu peux multiplier par 10 et y ajouter le nombre.
        Si tu travailles en chaîne de caractères, alors il te faut utiliser strncat.
        0
  4. garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   408
     
    la concaténation ne fonctionne que sur des string

    est ce que tu as essayé un "1" & "1" ?
    0
    1. Matthieu57 Messages postés 49 Statut Membre
       
      Je vais voir, il me semble que oui...
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Bonjour,
      Il n'y a pas de string en C. De plus l'opérateur & ne permet pas la concaténation en C
      Vous confondez probablement avec le VB.

      Cdlt
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   408
     
    dans la plupart des language il y a un opérateur de concaténation comme par exemple & ou + ou .
    après je n'ai pas assez fait de C pour en dire plus

    en tout cas ca m'étonnerai que le type string n'existe pas, les chaines sont bien déclarables dans tout language
    0
  7. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Dans la plupart des langages oui. Mais pas en C.
    De plus je maintiens qu'en c il n'y a pas de type string. Il faut faire un tableau de char. Ce qui explique en partie qu'il n'y a pas doperateur de concaténation.
    Pour faire de la concaténation de chaîne de caractères il faut utiliser la fonction strcat ou mieux strncat comme explique au début.
    0
    1. garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   408
       
      <hors sujet> ben a bas le C xD </hors sujet>
      0
  8. Bilow
     
    Bonjour,

    N'oubliez pas : sprintf() !

    int nmb1 = 5;
    int nmb2 = 7;
    char concatene [10];

    sprintf(concatene, "%d%d", nmb1, nmb2);

    Cordialement,
    Bilow.
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Certes, mais c'est une fonction dangereuse.
      Il vaut mieux utiliser strncat ou snprintf (C99).

      Cdlt
      0