gpt4 book ai didi

c++ - 如何修改 strcat 使其不会编辑 str1

转载 作者:行者123 更新时间:2023-11-30 20:11:58 25 4
gpt4 key购买 nike

为什么 strcat 给我它的 str1 版本?据我所知,如果你想对其进行编辑,函数原型(prototype)和实现中的 paramatater 之前必须有 & thing,但我在这里没有看到它。

char *strcat( char *str1, const char *str2 );

如何编辑此函数,使其仅返回新字符串,而忽略我给它的字符串?我的尝试

char *strApp(char *dest, const char *src)
{
size_t i,j;
size_t k = 0;
for (i = 0; dest[i] != '\0'; i++);
char rdest[100];
do {
rdest[k] = dest[k];
} while(++k<=i);
for (j = 0; src[j] != '\0'; j++)
rdest[i+j] = src[j];

rdest[i+j] = '\0';
return rdest;
}

它损坏了第二根弦。谁能给我安全且正确的版本?提前致谢。

最佳答案

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char *strApp(const char *s1, const char *s2)
{
char *pointer = malloc(strlen(s1) + strlen(s2) + 1);

if (pointer == NULL)
{
perror("failed to allocate memory");
exit(EXIT_FAILURE);
}

return strcat(strcpy(pointer, s1), s2);
}

int main()
{

char *s1 = "original";

char *s2 = " modified";

char *s3 = strApp(s1, s2);

printf("%s\n", s1);

printf("%s\n", s2);

printf("%s\n", s3);

free(s3);

return 0;
}

只是想指出您不需要完全重写 strcat() 来获得您想要的东西。

关于c++ - 如何修改 strcat 使其不会编辑 str1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38171060/

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