我有一個字符串,如「100110000111001100010001100011001100100
」。獲取C中字符串的尾部
如果我需要得到這個字符串的尾部,這意味着一切,但第一要素, 我必須每個字符複製到新陣列,從第二個元素(O(n))的開始,
還是有更快的方法來做到這一點,就像魔術般將指針向右移位或內置函數?
我有一個字符串,如「100110000111001100010001100011001100100
」。獲取C中字符串的尾部
如果我需要得到這個字符串的尾部,這意味着一切,但第一要素, 我必須每個字符複製到新陣列,從第二個元素(O(n))的開始,
還是有更快的方法來做到這一點,就像魔術般將指針向右移位或內置函數?
你可以做一個char *指向你需要的索引。
char *p = "100110000111001100010001100011001100100";
char *tail = &p[1]; //&p[1] is the same as p+1
printf("p = %s\ntail = %s\n",p,tail);
如果你不需要對字符串做任何修改,那麼你可以給原始指針加1,否則你需要複製。
沒什麼神奇的。指向字符串的指針,就像指向數組的指針一樣,只是第一個元素的地址。
基本指針算術,帶上你現有的指針,增加它(p++
),並且你有一個指向你的字符串「尾巴」的指針。