用c语言编写一个函数insertChar,完成如下功能:给定某个字符ch,在字符串s中所有的ch字符后面插入*字符,#include<stdio.h> {并返回该新字符串。如:若指定ch为o,字符串为:Who are you!,则函数insertChar处理后的新字符串为:Who* are yo*u!
时间: 2024-02-21 15:01:33 浏览: 140
好的,下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
char* insertChar(char* s, char ch) {
int len = strlen(s);
char* new_s = (char*)malloc(sizeof(char) * (2 * len + 1)); // 新字符串的长度可能是原来的2倍
int j = 0;
for (int i = 0; i < len; i++) {
new_s[j++] = s[i];
if (s[i] == ch) {
new_s[j++] = '*';
}
}
new_s[j] = '\0'; // 字符串结尾
return new_s;
}
int main() {
char s[100];
char ch;
printf("请输入字符串:");
gets(s);
printf("请输入要插入的字符:");
scanf("%c", &ch);
char* new_s = insertChar(s, ch);
printf("新字符串为:%s\n", new_s);
free(new_s); // 释放内存
return 0;
}
```
首先定义了一个 `insertChar` 函数,接受一个字符串和一个字符作为参数。函数中先计算字符串的长度,然后根据新字符串的可能长度申请内存。接着遍历原字符串,将每个字符复制到新字符串中,并在遇到指定字符时在后面插入一个 * 字符。最后在新字符串结尾处加上一个 \0 字符,表示字符串结束。
在主函数中,先输入原字符串和指定字符,然后调用 `insertChar` 函数得到新字符串,并输出。
需要注意的是,在使用 `gets` 函数输入字符串时,要注意输入的字符串长度不能超过数组的长度,否则会发生溢出。同时,在使用 `malloc` 函数申请内存时,需要在使用完后调用 `free` 函数释放内存,避免内存泄漏。
希望能对您有所帮助!
阅读全文