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

Matthieu57 Messages postés 49 Statut Membre -  
fiddy Messages postés 11653 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

7 réponses

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
Matthieu57 Messages postés 49 Statut Membre
 
Concaténation, merci, voila le mot que je cherchais.
0
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
fiddy Messages postés 11653 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
Utilisateur anonyme > fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention  
 
C'est bien à cause des buffer overflows ?
0
Matthieu57 Messages postés 49 Statut Membre
 
Merci, je vais esseyer ça.
0
Matthieu57 Messages postés 49 Statut Membre
 
Merci au deux
0
Matthieu57 Messages postés 49 Statut Membre
 
Effacer
0
fiddy Messages postés 11653 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
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
fiddy Messages postés 11653 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
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
Matthieu57 Messages postés 49 Statut Membre
 
Je vais voir, il me semble que oui...
0
fiddy Messages postés 11653 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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
fiddy Messages postés 11653 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
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
Bilow
 
Bonjour,

N'oubliez pas : sprintf() !

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

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

Cordialement,
Bilow.
0
fiddy Messages postés 11653 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