我有一个字符串,如“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++
),并且你有一个指向你的字符串“尾巴”的指针。