c语言 编写一个函数,删除字符串中字符'a',并返回删除后字符串的长度。int delchar(char *str)
时间: 2024-03-11 15:50:14 浏览: 51
好的,以下是实现删除字符串中字符'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)
希望对您有所帮助!
.编写程序,实现升级版删除指定字符程序;如果字符串str中存在多个(假设n个)指定字符ch,让用户选择删除字符串str中的第几个指定字符,实现要求如下: (1)实现unsigned int NumofChar(char * str,char ch)函数作用是检查字符串Str中有多少个ch字符,形参str指向被检索的字符串,ch形参是指定查找的字符。 (2)实现char * DelChar(char * str,char ch,unsigned int n)函数,作用是删除字符串Str中的第n个ch这个字符,形参str指向被检索的字符串,ch形参是指定要删除的字符,参数n指定是第几个ch。C语言
实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 检查字符串中有多少个指定字符
unsigned int NumofChar(char *str, char ch) {
unsigned int count = 0;
while (*str != '\0') {
if (*str == ch) {
count++;
}
str++;
}
return count;
}
// 删除字符串中的指定字符
char *DelChar(char *str, char ch, unsigned int n) {
unsigned int count = 0;
char *new_str = (char *)malloc(sizeof(char) * (strlen(str) + 1));
char *p = new_str;
while (*str != '\0') {
if (*str == ch) {
count++;
if (count == n) {
str++;
continue;
}
}
*p++ = *str++;
}
*p = '\0';
return new_str;
}
int main() {
char str[100], ch;
unsigned int n;
printf("请输入一行字符串:");
fgets(str, 100, stdin);
printf("请输入要删除的字符:");
scanf("%c", &ch);
getchar(); // 读取换行符
unsigned int count = NumofChar(str, ch);
if (count == 0) {
printf("字符串中不存在该字符!\n");
return 0;
}
printf("该字符在字符串中共出现了 %u 次,请输入要删除的是第几个:", count);
scanf("%u", &n);
getchar(); // 读取换行符
if (n > count) {
printf("输入的数字超过了该字符在字符串中出现的次数!\n");
return 0;
}
char *new_str = DelChar(str, ch, n);
printf("删除后的字符串为:%s\n", new_str);
free(new_str);
return 0;
}
```
代码说明:
- `NumofChar` 函数用于统计字符串中指定字符出现的次数,返回一个整数;
- `DelChar` 函数用于删除字符串中指定的第 n 个字符,并返回一个新的字符串;
- `main` 函数用于读取用户输入,并调用上述两个函数进行处理,最终输出结果。
阅读全文