⑴ 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