Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1769 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] #define dans une chaine de caracteres

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] #define dans une chaine de caracteres

n°1595847
cimourdain
Posté le 04-08-2007 à 13:58:44  profilanswer
 

Salut,
 

Code :
  1. #define CHAINE super chaine de caracteres !
  2.                    ...
  3. printf("ceci est une CHAINE" );


 
ne fonctionne pas puisque qu'affiche: ceci est une CHAINE et non ceci est une super chaine de caracteres !
 
Comment résoudre ce probleme sachant que je veux asbosument utiliser des #define et qu'ils ne contiennt pas de ", donc pas de #define CHAINE "super chaine de caracteres !"
Je pensais construire le chaine a coup de strcpy et strcat mais y'a pas plutot un moyen "syntaxique" du language ? ca serait plus simple.


Message édité par cimourdain le 04-08-2007 à 13:59:22
mood
Publicité
Posté le 04-08-2007 à 13:58:44  profilanswer
 

n°1595849
tpierron
Posté le 04-08-2007 à 14:02:42  profilanswer
 

Code :
  1. #define CHAINE "super chaine de caracteres !"
  2.                    ...
  3. printf("ceci est une " CHAINE " (qui peut continuer ici)" );


 
Edit: Arf, et sinon c'est impossible sans les guillemets dans le define. Sérieux, pourquoi un tel délire ?


Message édité par tpierron le 04-08-2007 à 17:34:21
n°1595867
cimourdain
Posté le 04-08-2007 à 19:28:48  profilanswer
 

non mais c'est bon tpierron ta méthode me convient très bien, je savais pas que le C permettait ce genre de syntaxe pour concatener des chaines !

n°1595868
matafan
Posté le 04-08-2007 à 19:32:49  profilanswer
 

J'avais posté un truc mais en fait c'est un poil plus compliqué. Voilà la bonne solution :
 
Il faut utiliser "#" pour transformer la macro en chaine de caractères. Il faut aussi deux niveaux de macros pour expanser la macro avant de la stringifier :

Code :
  1. #include <stdio.h>
  2. #define CHAINE super chaine de caracteres !
  3. #define xstr(s) str(s)
  4. #define str(s) #s
  5. int
  6. main()
  7. {
  8.         puts("ceci est une " xstr(CHAINE) " (qui peut continuer ici)" );
  9.         return 0;
  10. }

n°1595871
cimourdain
Posté le 04-08-2007 à 19:35:04  profilanswer
 

je comprends pas ca:
 
 
#define xstr(s) str(s)
 
#define str(s) #s
 
que signifie ce #s ?

n°1595872
matafan
Posté le 04-08-2007 à 19:35:42  profilanswer
 

cimourdain, la méthode de tpierron demande que la macro soit entre double quotes, ce que, d'après ce que tu as écrit, tu ne peux pas te permettre.

n°1595873
matafan
Posté le 04-08-2007 à 19:36:05  profilanswer
 
n°1595875
cimourdain
Posté le 04-08-2007 à 19:43:21  profilanswer
 

matafan a écrit :

cimourdain, la méthode de tpierron demande que la macro soit entre double quotes, ce que, d'après ce que tu as écrit, tu ne peux pas te permettre.


 
ben en fait, dans ces conditions, si !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] #define dans une chaine de caracteres

 

Sujets relatifs
directive php pour ecrire variable dans chaine sans guillemetsRemplacer une chaine par une autre dans une base SQL
[SQL] pb de syntaxe dans une chaineremplacer caractères avec VB6
[PHP] Couper une chaîne avec caractères html ?Random sur 5 caractères
chercher une sous chaine dans une chaine ![C] Problèmes avec les chaines de caractères
{RESOLU}[BATCH]Renomer fichier .jpg + MultiUpload 
Plus de sujets relatifs à : [C] #define dans une chaine de caracteres


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR