2010-07-05 9 views
0

On m'a confié la tâche de convertir des majuscules en majuscules en utilisant des macros. Le problème est que je n'ai jamais été présenté aux macros. Je sais juste que c'est quelque chose #define nom taille .. s'il vous plaît quelqu'un peut me guider sur cette questionconvertir en majuscules en utilisant des macros

+3

Lire un livre sur C - il y a une liste à http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list –

+3

Si le devoir est sur les macros, mais vous avez jamais été "introduit" aux macros, que faisiez-vous en classe? Lisez votre matériel de cours/notes de cours ou réveil. Penser que c'est "#define " ne va pas vous mener loin dans cette tâche; Ce que vous «savez» est faux. Aussi votre tuteur devrait probablement s'abstenir de vous donner des devoirs qui encouragent simplement une mauvaise technique de programmation. – Clifford

Répondre

5

La façon la plus simple de le faire serait quelque chose comme ceci:

#define LOWERTOUPPER(x) ((x - 'a') + 'A') 

Ensuite, vous pouvez utiliser cette fonction comme suit: dans la variable caractère

character = LOWERTOUPPER('z'); 

Ce qui aurait pour conséquence la tenue d'une ' Z '.

6

La réponse ci-dessus changerait également les choses qui ne sont pas des lettres. Peut-être ...

#define LOWERTOUPPER(x) (('a' <= (x) && (x) <= 'z') ? ((x - 'a') + 'A') : (x)) 

bien que cela donnerait du mal si elle était invoquée comme

LOWERTOUPPER(*p++); 

et aussi ne serait pas bon pour le jeu de caractères EBCDIC. Tout cela prouve que ce genre de chose est une mauvaise idée.

Questions connexes