gpt4 book ai didi

c - 有没有更好的方法来编写这个函数?

转载 作者:行者123 更新时间:2023-11-30 16:00:50 24 4
gpt4 key购买 nike

这是一个插入字符串函数,

void ins( char * T, size_t ip, char * P)
{
char temp1[100], temp2[100];

strncpy(temp1,T,ip);
strcpy(temp2, &T[ip]);

strcat(&T[ip], P);
strcat(&T[sizeof(temp1) + sizeof(P) - 2], temp2);
}

有没有更好的方法来编写这个函数?

最佳答案

我需要添加一个额外的参数 maxlen:可写入的 str 的最大大小。我还将返回类型修改为有用的内容。

size_t do_insert(char *str, size_t maxlen, size_t where, char *ins)
{
size_t len_str, len_ins;

/* these could be arguments, too,
** if these are already known by the caller.
*/
len_str = strlen(str);
len_ins = strlen(ins);

/* not enough space: return */
if (len_str + len_ins >= maxlen)
return len_str + len_ins;

/* I don't know what should happen if the place to insert
** is beyond the length of str
** [ there also is a corner case lurking here if where == len_str]
*/
if (where > len_str)
return ???;

/* make place for the insert by shifting str up.
** we move one byte extra: the nul character.
*/
memmove( str + where + len_ins, str + where, len_ins + 1);

/* put the insert where it belongs */
memcpy ( str + where, ins, len_ins );

/* return the length of the new string */
return len_str + len_ins;
}

注意:未经测试。

关于c - 有没有更好的方法来编写这个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7392910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com