C语言 如何在指定位置插入字符 完整代码
时间: 2024-12-09 21:17:54 浏览: 117
在C语言中,要在字符串中指定位置插入字符,你可以先计算出新的字符串长度,然后动态分配新的内存空间,并将原字符串、插入字符以及插入位置之后的部分依次复制到新内存中。以下是完整的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 功能:在给定字符串str的指定位置pos插入字符ch
void insert_char(char* str, char ch, int pos) {
size_t len = strlen(str); // 获取原始字符串长度
if (pos > len || pos <= 0) { // 检查插入位置是否合法
printf("Invalid insertion position.\n");
return;
}
// 计算新的字符串长度
size_t new_len = pos + 1 + (len - pos);
// 动态分配新的内存空间
char* new_str = realloc(str, new_len * sizeof(char));
if (new_str == NULL) {
printf("Memory allocation failed.\n");
return;
}
// 新字符串的前部分
strncpy(new_str, str, pos);
// 插入字符
new_str[pos] = ch;
// 新字符串的后部分
strncpy(new_str + pos + 1, str + pos, len - pos);
// 释放原始字符串内存
free(str);
str = new_str; // 更新指向新字符串的指针
printf("Inserted '%c' at position %d: %s\n", ch, pos, str);
}
int main() {
char str[] = "Hello, World!";
char ch = '!';
int pos = 7; // 在逗号后面插入字符
insert_char(str, ch, pos);
// 为了演示目的,这里不需要删除分配的新内存
return 0;
}
```
运行这个程序,它会在指定的位置插入字符。记得,在实际项目中,完成后别忘了处理内存分配失败的情况。
阅读全文