一道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);
} 展开
自己用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);
} 展开
3个回答
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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
调用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;
}
#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'都给删除了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询