繁体   English   中英

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

[英]how to truncate first few characters char array c++

我有一个叫做names[50]char array names[50]

基本上,我用

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

但是,这只会在结尾处截断字符。

如何从一开始就截断字符?

例如, BillSteveLinusMikeGeorgeBillSteveLinusMikeGeorgeGeorge应该是teveLinusMikeGeorgeBillSteveLinusMikeGeorgeGeorge

如果我正确理解,则必须使用显示的字符串作为示例,

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

您可以更改strncpy的源地址:

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

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

您需要清楚您想做什么...名称[]在调用之间的长度是否可变? 这->名称是否固定长度? 请注意,要复制的字节数的长度应为this-> names中可用的字节数...否则,存在冒内存溢出的风险。

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

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);
}

我测试了它的最终结果。

我认为该功能代码不需要任何注释:)如果我的解决方案对您有帮助,请记住检查是否已回答。

再见

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM