从数组中打印宏

时间:2014-06-18 01:22:32

标签: c arrays macros header-files

#define ________    0x0
#define _______X    0x1
#define ______X_    0x2
#define ______XX    0x3
#define _____X__    0x4

我已经创建了一些宏来在.h文件中存储几组字符作为整数值,如上所示,以便.h文件可以在其他文件中使用。

如果我将此.h文件包含在任何其他包含char数组的.c文件中,例如ch[] = {________,_______X},那么无论如何我都要打印实际的字符集,即" ____ "对于ch [0]和" _______ X"对于ch [1]。当我尝试打印时,它打印相应整数值的字符值,即0和1.请让我知道我可以用什么命令打印相同的。

2 个答案:

答案 0 :(得分:1)

根据定义,角色是单个角色。因此,打印单个字符(如0x2)将永远不会打印多个字符,例如" _ _ _ _ _ _ X _"。你这样做的方法是创建一个char *数组(C中的字符串是char *)而不是char数组。如,

char **mystrings = {"________", "_______X", "______X_", etc.}

然后,您可以使用

printf("%s", mystrings[______X_]);

将打印

______X_

答案 1 :(得分:0)

您在"二进制代码中表示数字"符号(_代表0,X代表1)。 由于正整数以精确的二进制表示形式存储在存储器中,因此可以使用位运算符>> <<和&获得成功的比特。

最后,对于每一位,你可以做类似的事情:

    putchar( bit? 'X': '_');

这句话询问你的位是1还是0.如果它等于1,那么一个字符' X'印刷,否则,' _'打印出来。

我给你留下了写(迭代)算法的细节,以找到给定数字的后续位。