使用宏转换为大写

时间:2010-07-05 10:16:52

标签: c

我被赋予了一个任务,通过使用宏来将小写字符转换为大写。问题是我从未被引入宏。我只知道它的名字#define名称大小..请任何人都可以指导我这个问题

3 个答案:

答案 0 :(得分:6)

上面的答案也会改变不是字母的东西。也许...

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

虽然如果将其作为

调用会产生麻烦
LOWERTOUPPER(*p++);

也不适合EBCDIC字符集。所有这一切都证明了这种事情是一个坏主意。

答案 1 :(得分:5)

最简单的方法是:

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

然后,你将使用如下函数:

character = LOWERTOUPPER('z');

这会导致字符变量保持'Z'。

答案 2 :(得分:-1)

阅读维基百科有关C preprocessor - Macro definition and expansion的文章(或通过使用您最喜欢的搜索引擎搜索c macro可以找到的任何其他文档/ C教程)。