gpt4 book ai didi

c - strncat 实现?

转载 作者:太空宇宙 更新时间:2023-11-04 07:34:16 25 4
gpt4 key购买 nike

很抱歉,如果这太入门级,但我尝试实现 strcpy strncat()的库函数如下:

#include <stdio.h>

void strncat (char *s, char *t, int n) {
// malloc to extend size of s
s = (char*)malloc (strlen(t) + 1);

// add t to the end of s for at most n characters
while (*s != '\0') // move pointer
s++;

int count = 0;

while (++count <= n)
*s++ = *t++;

*(++s) = '\0';
}

int main () {
char *t = " Bluish";
char *s = "Red and";

// before concat
printf ("Before concat: %s\n", s);

strncat(s, t, 4);

// after concat
printf ("After concat: %s\n", s);

return 0;
}

它编译并运行良好......只是它根本没有连接!

非常感谢任何反馈...谢谢!

最佳答案

看起来你用你的 malloc 重新定义了 s 指针,因为你已经完成了它,它并不指向你的第一个连接字符串。

首先函数返回类型应该是char*

char* strncat (char *s, char *t, int n)

之后,我认为您应该创建本地字符指针。

char* localString;

使用 malloc 为这个指针分配空间

localString = malloc (n + strlen(s) + 1); 

而且你不需要在这里进行类型转换,因为 malloc 会自己做

事实上,你应该在这里使用你的大小参数(n),而不是strlen(t)

并在用这个指针完成所有连接操作后返回它

return localString

关于c - strncat 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10361063/

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