gpt4 book ai didi

c - 如何用等效的 strcat() 替换 memcpy() ?

转载 作者:行者123 更新时间:2023-11-30 16:54:01 26 4
gpt4 key购买 nike

我有以下代码,可以正常工作,将子字符串插入原始字符串的特定部分。如何使用 strcat() 而不是 memcpy() 完成同样的事情?

void insertString(char original[], int start, int length, char toInsert[]){
size_t insertlen = strlen(toInsert);
size_t origlen = strlen(original);
char *m = malloc(origlen - length + insertlen);
memcpy(m, &original[0], start);
memcpy(m+start, &toInsert[0], insertlen);
memcpy(m+start+insertlen, &original[start+length], origlen-length+insertlen);
strcpy(original,m);
}

其中 char origin[] 是原始字符串,int start 是子字符串应开始的元素,int length 是从 original[] 中删除的子字符串的长度,char toInsert[] 是要插入的子字符串。

澄清示例:

例如。如果original[] = 默认字符串 1,开始=5长度=6toInsert[] = Hello World

结果 m 将等于“defauhello worlding 1”,因为本例中被替换的子字符串是“lt str”,从 5 个字符开始,长度为 6 个字符。如何使用 strcat() 而不是 memcpy() 完成同样的事情?

最佳答案

您可以使用 strncat 并按以下方式执行此操作。但是,请注意,以下内容不处理作为此问题一部分的错误条件和其他约束。

void insertString(char original[], int start, int length, char toInsert[]){
size_t insertlen = strlen(toInsert);
size_t origlen = strlen(original);
size_t newBuffLen = origlen - length + insertlen + 1
char *m = malloc(newBuffLen);
memset(m, 0, newBuffLen);
strncat(m, original, start);
strncat(m, toInsert, insertlen);
strncat(m, original + start+ length, origlen-start-length);
strcpy(original,m);
}

关于c - 如何用等效的 strcat() 替换 memcpy() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40669853/

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