c - 不使用 strcat 连接两个字符串
问题描述
我写了一个函数来连接两个字符串(s
= "computer"
; t
= "keyboard"
),但我的代码只返回"keyboard"
. 请指出错误。
char *concat(char *s, char *t) {
s = malloc((strlen(s) + strlen(t) + 1) * sizeof(char));
char *p = s;
while (*p != '\0') {
++p;
}
while (*t != '\0') {
*p++ = *t++;
}
*p = '\0';
return s;
}
我不想使用strcat()
. 这是来自 Stepik 的测试程序,因此我无法更改main
函数中的任何内容。
问题是:编写一个函数,它接收两个字符指针并返回一个表示它们连接的新字符指针。
解决方案
char *myconcat(const char *s1, const char *s2)
{
size_t len1,len2;
char *result = malloc((len1 = strlen(s1)) + (len2 = strlen(s2)) + 1);
if(result)
{
memcpy(result, s1, len1);
memcpy(result + len1, s2, len2 + 1);
}
return result;
}
推荐阅读
- excel - 通过“ListBox”传递数据
- django - 如何从 html 更新 django 数据库?
- node.js - Firebase Cloud Function,触发 onCreate 事件后如何访问父数据?
- android - 权限拒绝:无法附加文件,文件需要导出提供程序,或 grantUriPermission(),API 29
- sql - 在 postgresql 上查询 JSON 数组时我应该使用横向吗?
- angular - 如何以角度设置div的背景颜色?
- java - @ControllerAdvice 与 ExceptionHandler 类一起工作需要任何额外的设置吗?
- mongodb - 从 Databricks 写入 Azure cosmos DB 的问题
- angular - 角进口成本
- r - 使用另一个数据帧从一个数据帧中逐组采样 n 行