⑴ c语言,将数字和字符串拼成一个字符串。用宏来做,用api谁都会!
宏定义字符串拼接可以使用宏运算##,即 #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>
#definestrcat(x,y)x##y
intmain()
{
intstrcat(i,1),strcat(i,2);
i1=10,i2=20;
printf("%d%d",i1,i2);
return0;
}
/*运行结果:
1020
*/
⑵ C语言连接字符串函数
应该是可以的加上几个printf看一下到底走到哪里了,保证输入的字符串不会越界也挺重要
⑶ C语言 连接符号 # ## 宏定义
您好,我来试着解答一下你的疑惑。
先上两张图:
这个说的很明白,#粘合后成为“字符串”,而##粘结后成为“记号”。
所以,"token" #n之后,比如"token" #8,会显示为字符串"token8" ,这时调用"token8"[0],就相当于你取字符串"token8"中第一个字符,跟使用数组类似了(这一点存疑的话可以自己试验,比如"abcde[2]"代表c,跟用字符数组是一样的)。
但是"token" ##n之后,比如"token" ##8,会显示为记号token8,这时的token8相当于变量名而不是一个字符串字面量,所以token8[0]当然就是指这个数组里第一个元素了。
若有疑问请提出...
您的采纳是我们的动力~~
⑷ C语言 宏定义变字符串问题
宏不是函数,顶多可以用有参宏,但宏绝不是函数,宏,说白了,它的作用就是代码字面上的替换
#define FUN() “ !C*!D+A*!B*!D+!A*B*!C+A*B*C*D ”
char *str=FUN();
就完全等价于char *str=“ !C*!D+A*!B*!D+!A*B*!C+A*B*C*D ” ;
⑸ c语言有没有办法在宏后面拼接一个字符串
没有办法,还是用函数实现吧,不行的话使用c++的string类型何以拼接字符串
因为c是变量,你要得到的拼接字符串却在静态存储区
c++string类型:
http://blog.csdn.net/fym0512/article/details/7708094
⑹ 用C语言怎么将两个字符串连接起来
这些是宏的功能。
#是将一个参数转换为字符串。##可以连接字符串
比如这样:
#include <stdio.h>
#define STR(a,b) a##b
int main()
{
printf("%s ",STR("123","456"));
return 0;
}
⑺ C语言:将两个字符串连接起来。
这些是宏的功能。#是将一个参数转换为字符串。##可以连接字符串 比如这样:#include
<stdio.h>
#define
STR(a,b)
a##bint
main()
{ printf("%s
",STR("123","456"));
return
0;
}
⑻ C语言用宏实现将字符串与数字连接成一个字符串。其中数字是变化的。
这个是生涩的编译器指令,告诉编译器编译的时候把前后两部分合并到一块。
编译器工作的时候,首先把注释行转化为空格,按宏展开,处理预编译信息;
例如:
#ch#ar 处理后就是 char。
⑼ C语言 宏定义字符串问题
用拼接符可以做到
#define STRING(arg) "AAAAAAA"##arg##"BBBBBBBBBB"
但arg必须是个常量,不能是变量
⑽ 基础问题,C语言怎样拼接两个宏定义的字符串
宏定义的字符串 都是有""包含的
而在C中,两个用""包含的字符串,在没有任何可见字符(不包括空格,换行,tab)分隔,写在一起的时候 会当做一个字符串处理
也就是
"abc""def"
和
"abcdef"
是等效的。
所以 两个宏定义字符串,要拼接一起,直接写就好了
#defineA"a123"
#defineB"b456"
printf("%s",AB);
输出 a123b456