一道C语言字符串处理题,编辑一个自定义函数delch(char s[],char ch),并在main()函数中调用。

实现的功能为删除字符串s中从后往前数第一个ch字符,如输入字符串"##chinese#",删除字符‘e’,得到并输出新的字符串“##chines#”(只删除一个e)自己用... 实现的功能为删除字符串s中从后往前数第一个ch字符,如输入字符串"##chinese#",删除字符‘e’,得到并输出新的字符串“##chines#”(只删除一个e)
自己用VS2017写了一段代码,编译没问题,一运行就各种异常,求解。

#include<stdio.h>
#include<string.h>
void delch(char s[ ], char ch)
{
int i,j;
for (i = strlen(s); i >= 0; i--)
if (s[i] == ch) break;
for (j = i + 1; s[j] != '\0'; j++)
s[j] = s[j - 1];
s[j] = '\0';
}
void main()
{
char s[ ]="##Chinese#";
delch(s, 'e');
puts(s);
}
展开
 我来答
shine1991
科技发烧友

2019-01-10 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部
#include <stdio.h>
#include <string.h>
void delch(char s[], char ch)
{
    int i, j;
    for (i = strlen(s); i >= 0; i--)
        if (s[i] == ch)
            break;
    for (j = i ; s[j] != '\0'; j++)//<==============
        s[j] = s[j+1];//<================
    //s[j] = '\0';
}
void main()
{
    char s[] = "##Chinese#";
    delch(s, 'e');
    puts(s);
}

匿名用户
2019-01-10
展开全部
void delch(char s[ ], char ch)
{
int i,j;
for(i=strlen(s);i>=0;i--)
{
if(s[i]==ch)
{
for(j=i;j<strlen(s)-1;j++)
{
s[j]=s[j+1];
}
break;
}
}
}
void main()
{
char s[ ]="##Chinese#";
delch(s, 'e');
puts(s);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cylz0703
2019-01-09 · TA获得超过3.4万个赞
知道大有可为答主
回答量:1.8万
采纳率:83%
帮助的人:4440万
展开全部
调用delch函数,一次性删除字符串内所有指定字符,参考代码如下:
#include<stdio.h>
void delch(char s[],char ch)
{
int i,j;
for(i=j=0;s[i]!=0;++i)
if(s[i]!=ch) s[j++]=s[i];
s[j]=0;
}
int main()
{
char s[100],ch;
gets(s);
ch=getchar();
delch(s,ch);
printf("%s",s);
return 0;
}
更多追问追答
追答

追问
老哥,我说的是只删除一个字符,就是比如输入"#hello#chinese#",要删除最后一个e,得到的新字符串为"#hello#chines#",您这个相当于是把所有的'e'都给删除了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式