是否有任何C函数从char *中删除第N个元素(将char *作为数组)?
例:
char* tab --> |5|4|5|1|8|3|
remove_elt(tab, 3) --> 5|4|5|8|3|
提出的问题还不清楚。您建议它不是字符串,但不要在虚函数调用中指定数组大小。这将导致当前答案,该答案将数据视为以零结尾的字符串。
该答案的改进版本可以识别出您不需要致电strlen
:
void remove_elt(char *str, int i)
{
for(; str[i]; i++) str[i] = str[i+1];
}
但是,如果是一个存储大小的数组(而不是0
用作结束标记),则需要将该大小提供给函数。在这种情况下,您可以使用memmove
它来复制重叠的内存:
void remove_elt( char *str, int elem, int *size )
{
if( elem < --*size ) {
memmove( &str[elem], &str[elem + 1], *size - elem );
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句