gpt4 book ai didi

c - 带指针的简单 strcat 实现

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:14 25 4
gpt4 key购买 nike

所以我正在练习使用 K&R 编写带有指针的 C 代码。对于 strcat 函数的一个问题,我无法找出我的代码有什么问题,根据 Visual Studio,它在 strcat 函数之后返回了未更改的目标字符串。任何建议表示赞赏!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int strcat(char* s, char* t);
int main(void)
{
char *s="hello ", *t="world";
strcat(s,t);
printf("%s",s);
return 0;
}

int strcat(char* s,char* t)
{
int i;
i=strlen(s)+strlen(t);
s=(char*) malloc(i);
while(*s!='\0')
s++;
while('\0'!=(*s++=*t++))
;
return 0;
}

最佳答案

  1. 我很确定 strcat 在实际实现中返回一个 char*(保存第一个字符串的原始值)。
  2. strcat 不应更改第一个参数的地址,因此您不应调用 malloc
  3. 第 2 点意味着您需要在 main 中将 char *s 声明为 char s[20](其中 20 是一些大到足以容纳整个字符串的任意数字)。

如果你真的想改变输入参数的值,你需要传递值的地址 - 所以它需要是 strcat(char **s, ...) 在函数声明/定义中,并在 main 中用 strcat(&s, ...) 调用。

关于c - 带指针的简单 strcat 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17542541/

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