[英]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.