gpt4 book ai didi

c - 如何修复 C 中的自定义 insertString 函数

转载 作者:行者123 更新时间:2023-11-30 17:36:51 24 4
gpt4 key购买 nike

#include <stdio.h>

int strLength(char *strP)
{
int i = 0;
while(*(strP + i) != '\0') i++;
return i;
}
// insert the second string into the first starting
// at the specified index
// if failure, do nothing
void insertString(char *str1P, char *str2P, int index)
{
int i = 0,
str1Length = strLength(str1P), str2Length = strLength(str2P);

*(str1P + str1Length + str2Length) = '\0';
while(i < (str1Length - index))
{
*(str1P + index + str2Length + i) = *(str1P + index + i);
*(str1P + index + i) = *(str2P + i);
i++;
}
}

int main()
{
//insert
char str8[20] = "the wrong son";

insertString(str8, "per", 14 );
printf("\nAfter insert1 = %s\n", str8);

insertString(str8, "per", 10 );
printf("After insert2 = %s\n", str8);

insertString(str8, "You are ", 0);
printf("After insert3 = %s\n\n", str8);
return 0;
}

我正在为我的算法和程序设计类(class)学习 C 中的指针和字符串,最近我们收到了这个作为作业的一部分。我已经完成了所有其他操作,但 insertString 函数仍然遇到问题。 main 的前两次调用产生了理想的结果,但第三次似乎失败了。有人可以帮我找出是什么原因造成的吗?

最佳答案

第三次调用失败,因为 str8 的大小为 20。第三次字符串插入需要的内存比分配给 str8[20] 的内存更多。
因此,请分配更多内存来支持第三个字符串插入,或者您可以对字符串变量使用动态分配来获得通用解决方案。

关于c - 如何修复 C 中的自定义 insertString 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22552814/

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