c語言中的字串拼接

2021-09-19 23:59:22 字數 1617 閱讀 4034

在看核心原始碼時,看到這樣一段**:

int __init ip_vs_protocol_init(void)

while (0)

protocols[0] = '\0';

protocols[2] = '\0';

#ifdef config_ip_vs_proto_tcp

register_protocol(&ip_vs_protocol_tcp);

#endif

#ifdef config_ip_vs_proto_udp

register_protocol(&ip_vs_protocol_udp);

#endif

#ifdef config_ip_vs_proto_sctp

register_protocol(&ip_vs_protocol_sctp);

#endif

#ifdef config_ip_vs_proto_ah

register_protocol(&ip_vs_protocol_ah);

#endif

#ifdef config_ip_vs_proto_esp

register_protocol(&ip_vs_protocol_esp);

#endif

pr_info("registered protocols (%s)\n", &protocols[2]);

return 0;

}

不太理解,研究了一番,記錄一下自己的理解。

1 怎麼判斷字串的結尾?

每個位元組都是8位的2進製,如果每一位都為0,則表示字串的末尾。申請的陣列,每個位元組的值是不確定的,除非手動清零,否則不一定為0.

2 字串怎麼拼接的?

先判斷兩個字串的末尾,然後將兩個字串拼接到一起,並將字串最末尾設定為0。

3 為什麼要將位置0和位置2都置為0?

protocols[0] = 『\0』;

protocols[2] = 『\0』;

將位置0置為0表示這是乙個空字串。

拼接的時候,前面預設帶了", "這兩個符號。所以從位置2開始輸出,可以過濾掉前面多餘的「, 」,那麼為什麼需要將位置2也置為0呢?這是因為如果沒有發生拼接的情況下,需要保證輸出為空。

附測試**:

/*strcattest.c*/

#include #include int main ()

測試結果:

root@debian2:~/test# gcc strcattest.c -o strcattest;./strcattest

postition 0:0

postition 0:0

postition 3:0

postition 4:-32

postition 49:65

registered protocols 2 ()

registered protocols 3()

registered protocols 4(▒n▒▒▒▒)

registered protocols 49(a)

root@debian2:~/test#

R語言中字串的拼接操作

在r語言中 paste 是乙個很有用的字串處理函式,可以連線不同型別的變數及常量。函式paste的一般使用格式為 paste sep collapse null 其中 表示乙個或多個r可以被轉化為字元型的物件 引數sep表示分隔符,預設為空格 引數collapse可選,如果不指定值,那麼函式past...

c 拼接字串陣列 C 字串拼接

測試環境 unity2018.4 net4.x。需要注意.net4.x和3.5差異還是挺大的 寫的內容大部分網上已有,算是總結他人的成果,是 1 先說幾條結論 1 1 字串在c 中是高頻出現的 1 2 這類高頻出現方法 字段通常不是每幀的效能瓶頸。但有可能是瞬間卡頓的 1 3 字串記憶體開銷計算 2...

C語言中的字串

從概念上講,c語言中沒有字串型別 在c語言中使用字元陣列來模擬字串 c語言中的字串是以 0 結束的字元陣列 c語言中的字串可以分配於棧空間,堆空間或者唯讀儲存區 char s1 沒有 0 所以s1只不過是個單純的字元陣列 char s2 也是乙個字元陣列,但是最後乙個元素是 0 因此s2就成了c語言...