преобразовать в верхний регистр, используя макросы - PullRequest
0 голосов
/ 05 июля 2010

Мне дали задание преобразовать строчные буквы в прописные с помощью макросов. Проблема в том, что я никогда не знакомился с макросами. я просто знаю, что это что-то #define name size .. пожалуйста, кто-нибудь может направить меня в этом вопросе

Ответы [ 3 ]

6 голосов
/ 06 июля 2010

Ответ выше также изменит вещи, которые не являются буквами. Возможно ...

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

хотя это вызвало бы проблемы, если бы оно вызывалось как

LOWERTOUPPER(*p++);

, а также не подходит для набора символов EBCDIC. Все это доказывает, что подобные вещи - плохая идея.

5 голосов
/ 06 июля 2010

Самый простой способ сделать это будет примерно так:

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

Тогда вы бы использовали эту функцию следующим образом:

character = LOWERTOUPPER('z');

Что приведет к тому, что символьная переменная будет содержать «Z».

0 голосов
/ 05 июля 2010

Прочтите статью в Википедии о C препроцессоре - определение и расширение макроса (или любой другой учебник по документу / C, который вы можете найти, выполнив поиск c macro в вашей любимой поисковой системе).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...