c语言 编写一个函数,删除字符串中字符'a',并返回删除后字符串的长度。int delchar(char *str)
时间: 2024-03-11 07:50:14 浏览: 13
好的,以下是实现删除字符串中字符'a'并返回删除后字符串长度的C语言函数delchar:
```c
int delchar(char *str) {
int len = strlen(str);
int i, j;
for (i = 0, j = 0; i < len; i++) {
if (str[i] != 'a') {
str[j++] = str[i];
}
}
str[j] = '\0';
return j;
}
```
函数中使用了两个指针 i 和 j,其中 i 指向原字符串中当前要处理的字符,j 指向修改后的字符串中当前可写的位置。遍历原字符串,如果当前字符不是 'a',则将其写入新字符串中,并移动 j 指针;如果当前字符是 'a',则跳过该字符不处理。最后,将新字符串的结尾标记设为 '\0',返回新字符串的长度 j 即可。
需要注意的是,函数执行后原字符串内容会被修改,如果需要保留原字符串,可以先将原字符串复制一份再对复制后的字符串进行删除操作,或者在函数内部先将原字符串复制一份再进行操作。
相关问题
用C语言编写一函数删除字符串中指定的字符,函数的原型为: void strdelch( char *str, char c ),并制作流程
好的,下面是实现函数的代码和流程图。
```c
#include <stdio.h>
#include <string.h>
void strdelch(char *str, char c) {
int i, j;
for (i = j = 0; str[i] != '\0'; i++) {
if (str[i] != c) {
str[j++] = str[i];
}
}
str[j] = '\0';
}
int main() {
char str[100];
char c;
printf("请输入一个字符串:");
scanf("%s", str);
getchar(); // 读取多余的回车符
printf("请输入要删除的字符:");
scanf("%c", &c);
strdelch(str, c);
printf("删除指定字符后的字符串为:%s\n", str);
return 0;
}
```
流程图如下:
![strdelch函数流程图](https://i.imgur.com/3rS6Q0u.png)
希望对您有所帮助!
用c语言编写一个程序,将一个指定字符插入到主字符串中指定位置。
下面是用C语言编写的将一个指定字符插入到主字符串中指定位置的程序:
```c
#include <stdio.h>
#include <string.h>
void insert(char *str, char ch, int pos) {
int len = strlen(str);
if (pos > len) {
printf("Error: invalid position!\n");
return;
}
memmove(str + pos + 1, str + pos, len - pos + 1);
str[pos] = ch;
}
int main() {
char str[100], ch;
int pos;
printf("Enter a string: ");
fgets(str, sizeof(str), stdin);
printf("Enter a character to insert: ");
ch = getchar();
printf("Enter the position to insert: ");
scanf("%d", &pos);
insert(str, ch, pos);
printf("Result: %s", str);
return 0;
}
```
程序中使用了字符串库函数 `strlen()` 和 `memmove()`,需要在程序开始处包含头文件 `string.h`。函数 `insert()` 接受三个参数:主字符串指针 `str`、要插入的字符 `ch` 和插入位置 `pos`。如果插入位置超过了主字符串的长度,函数会输出错误信息并返回。否则,函数使用 `memmove()` 函数将插入位置后面的字符向后移动一位,然后将要插入的字符放到插入位置上。
在 `main()` 函数中,程序首先读入一个字符串,然后读入要插入的字符和插入位置。接着调用 `insert()` 函数将字符插入到字符串中,并输出结果。