在不使用任何库函数,不使用strcpy()的情况下用C语言代码实现在字符串指定位置插入新的字符串
时间: 2024-09-14 09:08:49 浏览: 37
要在C语言中不使用`strcpy()`或其他库函数,在字符串指定位置插入新字符串,你可以手动遍历原字符串并在目标位置拼接。以下是一个简单的示例,假设我们有一个原始字符串`src`,插入点的位置`pos`以及待插入的新字符串`insert_str`:
```c
#include <stdio.h>
void insert_string(char* src, int pos, const char* insert_str) {
// 检查输入的有效性
if (src == NULL || insert_str == NULL) {
printf("Invalid input.\n");
return;
}
// 计算插入后的总长度
int len_src = strlen(src);
int len_insert = strlen(insert_str);
int total_len = len_src + len_insert;
// 判断插入位置是否超出数组范围
if (pos > total_len) {
printf("Insertion position is out of range.\n");
return;
}
// 创建一个新的字符串,足够容纳原字符串、插入字符串及终止符'\0'
char new_str[total_len+1]; // +1 for null terminator
// 如果插入位置不是开始,先复制前一部分
if (pos != 0) {
memcpy(new_str, src, pos - 1); // 不包括最后一个字符
}
// 现在在原字符串末尾添加新字符串
strcat(new_str, insert_str);
// 将剩余部分复制到新字符串
if (pos != total_len) {
memcpy(&new_str[pos], &src[pos - 1], len_src - pos + 1); // 可能需要减去空格
}
// 添加终止符
new_str[total_len] = '\0';
// 输出结果
printf("Inserted string at position %d: %s\n", pos, new_str);
}
int main() {
char src[] = "Hello, world!";
int pos = 7; // 插入位置
char insert_str[] = "C programming";
insert_string(src, pos, insert_str);
return 0;
}
```
阅读全文