C语言,将数字和字符串拼成一个字符串。用宏来做,用api谁都会!

我请分析下,C语言,将数字和字符串拼成一个字符串。用宏来做,用api谁都会!
最新回答
独我暖阳

2024-12-02 09:05:21

宏定义
字符串拼接可以使用宏运算##,即 #define strcat(x,y) x##y。

##

运算符
可以将两个记号(例如
标识符
)“粘”在一起,成为一个记号。如果其中一个操作数是宏参数,“粘合”会在当形式参数被相应的实际参数替换后发生。考虑下面的宏:

#define MK_ID(n) i##n

下面的声明使用MK_ID创建了3个标识符:

int MK_ID(1), MK_ID(2), MK_ID(3);

预处理后声明变为:

int i1, i2, i3;

例如:

#include <
stdio.h
>
#define strcat(x,y) x##y
int main()
{
    int strcat(i,1),strcat(i,2);
    i1=10,i2=20;
    printf("%d %d",i1,i2);
    return 0;
}
/*运行结果:
10 20
*/
铲屎大将军

2024-12-02 11:13:44

宏定义有两种运算符,#和##
#运算符将一个宏参数转换成为字符常量
eg: #define PRINT_INT(x) printf(#x " = %d\n",x);
##运算符将两个标识符“粘”在一起,成为一个标识符
eg: #define MK_ID(N) x##n <==> MK_ID(1) = x1

然后你把这两个宏结合起来,就达到你的目的了,而且可以很灵活的随意使用
下面是一种可能例子,你可以根据需要修改
#define HAHA(x,y) (#x##y)
x代表你要输入的数字,y代表字符串
追问
#define haha(s,n) (#s##n)
int id = 1 ;
printf("%s\n",haha("name_",id)) ;
这样为什么不对呢

快点帮忙阿!!!急死了。拜托了