创建连接两个字符串的函数应根据以下条件创建函数
1.应使用putchar关键字
1.原型必须为char *_strcat(char *dest,char *src);
1.该函数应在dest的末尾添加一个终止空值
1.函数应返回指向dest的指针。
下面的函数找到src字符串的结尾并将其附加到dest字符串。我在main.c文件中尝试了一下,得到的是World!Hello而不是Hello World!
void concatenate(char* str1, char* str2) {
int i = 0, j = 0;
// Find the end of the first string
while (str1[i] != '\0') {
i++;
}
// Append the second string to the end of the first string
while (str2[j] != '\0') {
str1[i] = str2[j];
i++;
j++;
}
// Add a null terminator to the end of the concatenated string
str1[i] = '\0';
}
1条答案
按热度按时间lokaqttq1#
您的作业有问题:
这句话不够精确:它应该分配一个新的字符串,还是像
strcat()
那样在第一个字符串的末尾连接第二个字符串?我宁愿这样写:功能应满足以下要求。
putchar
关键字 *。这是一个非常荒谬的要求!
putchar
不是一个 keyword,而是一个宏(一个函数),它定义在<stdio.h>
中。在用户函数中使用它是可行的,但需要技巧,不是新手应该尝试的,当然也不是任何程序员应该做的。char *_strcat(char *dest, char *src);
*这个要求是假的:
_
开始)。my_strcat
或concat_string
是更好的选择src
应该声明为const char *src
。并且它将指示函数的行为可能类似于strcat
,或者两个参数都应该是const
限定的,并且函数应该分配内存。该函数应在dest末尾添加一个终止空值。
如果结果将用作C字符串,则这是隐式的。
函数应返回指向
dest
的指针。最后,关于预期语义的指示:与
strcat
相同。您的实现几乎是正确的,除了以下几点:
dest
和src
i
和j
的类型,应使用size_t
dest
。根据您的观察,您没有发布完整的程序,但很可能是您以错误的顺序传递了参数和/或包含
Hello
的目标数组不够长,无法接收连接字符串。以下是修改后的版本: