如何截断前几个字符char array c ++

时间:2014-11-29 18:58:06

标签: c++ char strncpy

我有char array名为names[50]

基本上,我使用

strncpy(this->names, names, sizeof(names))

然而,这只会在最后截断字符。

如何从头开始截断字符?

例如,BillSteveLinusMikeGeorgeBillSteveLinusMikeGeorgeGeorge应为teveLinusMikeGeorgeBillSteveLinusMikeGeorgeGeorge

4 个答案:

答案 0 :(得分:1)

如果我已经正确理解然后使用您显示的字符串作为示例,则必须编写

strncpy( this->names, names + 5, sizeof(names) - 5 );

答案 1 :(得分:0)

您可以更改strncpy的源地址:

strncpy(this->names, &(names[10]), num_of_chars_to_copy);

请注意,如果源字符串长于num,则不会在目标字符串的末尾隐式附加空字符。

答案 2 :(得分:0)

你需要清楚你想做什么...名字[]的长度是否从呼叫到呼叫变化?这是>名称固定长度?请注意,要复制的字节数的长度应该是此>名称中可用的字节数...否则,您将面临溢出内存的风险。

答案 3 :(得分:0)

我为您设计了这个简单的功能,您可以将它用作更复杂问题的参考代码:

void BackStrCopy(char* src, char* dest, int srcsize, int destsize)
{
    if(srcsize >= destsize )
    {
        do
            dest[destsize--] = src[srcsize--];
        while( destsize + 1 );
    }
}

int main()
{
  char* src    = "BillSteveLinusMikeGeorgeBillSteveLinusMikeGeorgeGeorge";
  char  dest[50];
  BackStrCopy(src, dest, strlen(src), 25);
}

我测试了它的最终工作。

我觉得功能代码不需要任何评论:) 如果我的解决方案对您有帮助,请记得将其检查为已解答。