Passer "un" argument "deux-en-un" a une fonction

Passer "un" argument "deux-en-un" a une fonction - C - Programmation

Marsh Posté le 02-04-2014 à 10:42:12    

Bonjour,
 
J'ai constate qu'il etait possible d'avoir une foncton que l'on peut appeler comme ceci :
 

Code :
  1. puts("salut" );               // salut
  2. puts("salut" " bonjour" );    // salut bonjour


Par contre, je cherche un moyen de comprendre comment ca marche, et pourquoi lorsque je fais ceci, cela ne marche pas:
 

Code :
  1. char *str = "salut";
  2. puts(str " coucou" ); // compilation error, il manque un ')' apres str.


Quelqu'un peut m'eclairer ? :)


Message édité par Profil supprimé le 02-04-2014 à 10:50:18
Reply

Marsh Posté le 02-04-2014 à 10:42:12   

Reply

Marsh Posté le 02-04-2014 à 14:12:23    

Il n'y a qu'un seul argument passé à puts:
En C, le compilateur transforme "salut" " bonjour" en "salut bonjour"  (bref, il élimine les espaces tabulations et sauts de lignes entre deux "
Donc quand tu fais puts("salut" " bonjour" ); c'est transformé en puts("salut bonjour" ); avant de faire l'appel à puts qui n'a qu'un argument.
 
A la base c'est pour faire des choses style  
char *maGrandeLigne = "une ligne coupee"
                                " en deux";
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 02-04-2014 à 16:43:26    

Salut et merci pour ta reponse. :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed