Language C
Fermé
dancingmad
-
4 avril 2008 à 16:21
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 4 avril 2008 à 17:18
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 4 avril 2008 à 17:18
5 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
4 avril 2008 à 16:28
4 avril 2008 à 16:28
Le premier argument de scanf, qui précise le type de ce qui sera entré, c'est soit %s (chaine de caractère), %d (pour un entier), %f (flottant) etc... Mais dans ton code ça donne %32 ce qui n'a pas de sens. Remplace %LG_STR par %s
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
4 avril 2008 à 16:46
4 avril 2008 à 16:46
Ah oui d'accord, faut faire précéder ta variable du signe dièse pour la conversion d'une constante préprocesseur en chaine:
Ce qui donnera après le traitement du préprocesseur:
Ce qui donnera après le passage du compilateur:
Voilà ça devrait marcher.
scanf("%" #LG_STR "s",s);
Ce qui donnera après le traitement du préprocesseur:
scanf("%" "32" "s",s);
Ce qui donnera après le passage du compilateur:
scanf("%32s",s);
Voilà ça devrait marcher.
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
4 avril 2008 à 16:52
4 avril 2008 à 16:52
J'avour que je suis pas trop sûr de moi sur ce coup là. Sinon essaie ça:
#define MON_PRINTF(l,s) printf("%" #l "s", s) MON_PRINTF(#LG_STR, chaine);
Merci beaucoup !
C'est la 2e solution qui marche. Et on peut mettre ou non le # devant LG_STR dans l'appel de la macro.
C'est la 2e solution qui marche. Et on peut mettre ou non le # devant LG_STR dans l'appel de la macro.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
4 avril 2008 à 17:18
4 avril 2008 à 17:18
Ah oui au moment de l'appel de la macro j'ai mis le dièse mais j'ai pas fait exprès, normalement faut pas le mettre.
4 avril 2008 à 16:37
Ce que je veux, c'est juste ecrire
scanf("%xxs",s);
avec la valeur decimale de xx egale a LG_STR, sans avoir a l'entrer a la main.