编程实现:利用指针实现两个字符串拼接的功能(尽量不能调用库函数。 提示:已知strcat库函数的原型是 char *strcat(char *strDest, const char *strSrc); strDest是目的字符串,strSrc是源串。 我的作业
时间: 2024-10-12 13:17:00 浏览: 36
在编程中,你可以通过循环遍历源字符串的每个字符,并将其逐个追加到目的地字符串的末尾来实现两个字符串的拼接,而不直接使用库函数如`strcat`。这里是一个简单的C语言的例子:
```c
#include <stdio.h>
#include <stdlib.h> // 仅用于获取内存大小
void string_concatenate(char **dest, const char *src) {
int dest_len = 0;
if (*dest != NULL) {
// 如果dest已经有内容,需要计算当前长度
dest_len = strlen(*dest);
}
// 计算源字符串的长度
int src_len = strlen(src);
// 考虑空间不足的情况,动态分配新的内存
if (dest_len + src_len + 1 > *dest ? *dest : (size_t)-1) { // 预留一个空位给结束符'\0'
char* new_dest = realloc(*dest, dest_len + src_len + 1);
if (new_dest == NULL) {
printf("Memory allocation failed.\n");
return;
}
*dest = new_dest;
}
// 将源字符串追加到dest
for (int i = 0; i < src_len; ++i) {
(*dest)[dest_len + i] = src[i];
}
// 结束符 '\0'
(*dest)[dest_len + src_len] = '\0';
}
int main() {
char* strDest = "Hello, ";
char* strSrc = "world!";
string_concatenate(&strDest, strSrc);
printf("%s\n", strDest); // 输出: Hello, world!
free(strDest); // 释放内存,避免内存泄漏
return 0;
}
```
在这个例子中,我们首先检查`dest`是否为空,然后计算新的字符串长度(包含结束符`\0`),如果需要的话,会动态分配新内存。接着将源字符串的每一个字符复制到目标字符串中,最后添加结束符。
阅读全文