本题要求实现一个删除字符串中的指定字符的简单函数。 函数接口定义: void delchar( char *str, char c ); 其中char *str是传入的字符串,c是待删除的字符。函数delchar的功能是将字符串str中出现的所有c字符删除。 裁判测试程序样例: #include <stdio.h> #define maxn 20 void delchar( char *str, char c ); void readstring( char s[] ); /* 由裁判实现,略去不表
时间: 2023-04-28 16:02:26 浏览: 107
实现一个删除字符串中指定字符的函数,函数接口定义为:void delchar(char *str, char c)。其中,str是传入的字符串,c是待删除的字符。函数的功能是将字符串str中出现的所有c字符删除。
实现思路:
1. 遍历字符串str,找到所有等于c的字符。
2. 将等于c的字符替换成下一个字符,直到字符串结尾。
3. 将字符串结尾的位置向前移动,直到删除所有等于c的字符。
代码实现:
void delchar(char *str, char c)
{
char *p = str; // 定义指针p指向字符串str的首地址
while (*p) // 遍历字符串str
{
if (*p == c) // 如果找到等于c的字符
{
char *q = p; // 定义指针q指向等于c的字符
while (*q) // 将等于c的字符替换成下一个字符
{
*q = *(q + 1);
q++;
}
}
else
{
p++; // 如果不是等于c的字符,指针p向后移动
}
}
// 将字符串结尾的位置向前移动,直到删除所有等于c的字符
while (*str)
{
if (*str == c)
{
char *q = str;
while (*q)
{
*q = *(q + 1);
q++;
}
}
else
{
str++;
}
}
}
测试程序:
#include <stdio.h>
#define maxn 20
void delchar(char *str, char c);
void readstring(char s[]);
int main()
{
char s[maxn], c;
readstring(s); // 读入字符串
scanf("%c", &c); // 读入待删除的字符
delchar(s, c); // 删除字符串中的指定字符
printf("%s\n", s); // 输出删除后的字符串
return ;
}
void readstring(char s[])
{
scanf("%s", s);
}
阅读全文