网站开发常见技术问题做网站要找什么软件
题目:
标准库函数strcat会将一个字符串追加到另一个字符串的末尾。
现在我们编写一个函数把两个字符串拼接起来,返回拼接的结果,但要求不改变其中任何一个字符串。其函数声明如下:
char* my_strcat(const char* prefix, const char* suffix);
形参prefix表示前缀,suffix表示后缀,拼接的结果是prefix + suffix比如:my_strcat(“abc”, “d”),拼接的结果是"abcd"。
思路:
在堆上分配内存空间,用于存储结果字符串。
将prefix和suffix两个字符串的字符信息复制进去
。
关键点
分析:
:
代码
// 在堆上动态分配内存拼接两个字符串
char* dynamic_strcat(const char* prefix, const char* suffix) {// 计算拼接后字符串的长度int new_str_len = strlen(prefix) + strlen(suffix);char *new_str = malloc(new_str_len + 1); // char在各平台上长度都是1,所以不用乘了if (new_str == NULL) {printf("ERROR: malloc failed in dynamic_strcat!\n");exit(1);}// 长度是精确计算得出的,不用担心越界访问strcat(strcpy(new_str, prefix), suffix);return new_str;
}int main(void) {char str1[] = "hello";char str2[] = " world!";char* result_str = dynamic_strcat(str1, str2); // 注意只要涉及动态内存分配,一律用指针类型。这里不能用数组类型puts(result_str);// 现在不再使用result字符串了,不要忘记free它free(result_str);return 0;
}
解决方案总结:
: