用c加加设计一个通用函数char*insert (char*s1,char*S2,int n)实现在字符串s1 中从第m全字符开始插入字符串s2,在主程序中对该函数进 测试。
时间: 2024-10-05 07:01:58 浏览: 61
程序员杂志2001年第7期.PDF
在C语言中,你可以创建一个名为`insert`的通用函数,它接受两个`char`类型的指针`s1`和`s2`,以及一个整数`n`作为参数。这个函数的主要目的是将`s2`中的内容插入到`s1`的指定位置,并返回新的字符串。下面是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义插入字符串的函数
char* insert(char *s1, char *s2, int n) {
// 检查输入是否合理
if (s1 == NULL || s2 == NULL || n <= 0) {
printf("Invalid input. Please provide a valid string and index.\n");
return NULL;
}
// 计算新字符串的长度
int new_length = strlen(s1) + strlen(s2) - n + 1;
// 动态分配足够的内存来保存新字符串
char *result = (char*) malloc(new_length * sizeof(char));
if (result == NULL) {
printf("Memory allocation failed.\n");
return NULL;
}
// 插入s2到s1的指定位置
strncpy(result, s1, n - 1); // 将s1的前n-1个字符复制到结果
result[n - 1] = '\0'; // 置空s1的位置
// 连接s2到结果
strcat(result, s2);
// 结束处添加'\0'
result[strlen(result)] = '\0';
return result;
}
int main() {
char str1[] = "Hello";
char str2[] = " World!";
int pos = 6; // 插入位置
char *new_str = insert(str1, str2, pos);
if (new_str != NULL) {
printf("Inserted '%s' at position %d in '%s':\n", str2, pos, str1);
printf("%s\n", new_str);
free(new_str); // 释放动态分配的内存
}
阅读全文