1樓:匿名使用者
巨集定義字串拼接可以使用巨集運算##,即 #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
#define strcat(x,y) x##yint main()
/*執行結果:
10 20*/
2樓:匿名使用者
巨集定義bai有兩種運算
符du,#和##
#運算子將一zhi個巨集引數轉換成為字元dao常量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代表字串
c語言字串陣列逆序問題,C語言字串陣列逆序問題
第乙個問題 字串陣列的長度不包括最後的 0 第二處問題 1 把 for i 0 str1 i 0 i 後面加上乙個分號 2 把for i 0 str1 i 0 i 後面的花括號去掉 3 再把 puts str1 前面的花括號去掉就可以了 程式如下 include stdio.h int main c...
c語言,關於字串
mark 這個分析了下還挺複雜 想想先 這樣子話幾乎是沒有辦法實現的。因為哪一些字元屬於子串是不確定的,big可能是乙個子串,igb可能是乙個子串,gba可能是乙個子串。不過當你確定你需要查的子串時,可以進行判定的。比如查詢這個字串裡有多少個 big 我這裡提供乙個思路參考。這是乙個字串 strin...
C語言字串陣列
不是的,printf裡 s是通過後面的name定址到該記憶體單元,然後從該記憶體單元開始讀取資料,知道 0 字元結束。所以會把你輸入的東西輸出 是的,但是 s的含義是,把從這個位址開始的內容當作ascii碼依次輸出來,直到碰到 0 就是一種機械的做法 比如 int a printf s a 會輸出a...