我有char array
名为names[50]
基本上,我使用
strncpy(this->names, names, sizeof(names))
然而,这只会在最后截断字符。
如何从头开始截断字符?
例如,BillSteveLinusMikeGeorgeBillSteveLinusMikeGeorgeGeorge
应为teveLinusMikeGeorgeBillSteveLinusMikeGeorgeGeorge
答案 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);
}
我测试了它的最终工作。
我觉得功能代码不需要任何评论:) 如果我的解决方案对您有帮助,请记得将其检查为已解答。
侨