鞋面给出的函数del()其功能是从字符串S中删除指定字符ch,请将函数体补充完整
void del(char *s,char ch)
{
}
能够对使用的变量正确定义1分
能够使用循环对整个字符串进行处理3分
能够使用if语句判断要删除的字符2分
能够在新生辰的字符串末未添加串结束符2分
程序没有其他逻辑或者语法错误2分
用指针来解决
#include<stdio.h>
void del(char *,char);
int main()
{
char s[100];
char ch;
printf("输入字符串");
scanf("%s",s);
fflush(stdin);
printf("输入要删除的字符 ");
scanf("%c",&ch);
del(s,ch);
puts(s);
}
void del(char *s,char ch)
{
char *k; //用于删除元素的时候替代s
while(*s) //当s为字符串结束符时结束
{
if(*s==ch)
for(k=s;*k!='\0';k++)//发现相同字符后面的元素集体前移覆盖
*k=*(k+1);
s++;
}
}
运行结果为
温馨提示:答案为网友推荐,仅供参考
第1个回答 2018-12-29
字符串一次性删除指定字符,参考及测试代码如下:
#include<stdio.h>
void del(char *s, char ch)
{
int i,j;
if(s==NULL)
return;
for(i=j=0;s[i]!='\0';++i)
if(s[i]!=ch) s[j++]=s[i];
s[j]='\0';
}
int main()
{
char s[100]="abcabcabc";
int i;
char a='a';
puts(s);
del(s, a);
printf("%s",s);
return 0;
}追答
#include<stdio.h>
void del(char *s, char ch)
{
int i,j;
if(s==NULL)
return;
for(i=j=0;s[i]!='\0';++i)
if(s[i]!=ch) s[j++]=s[i];
s[j]='\0';
}
int main()
{
char s[100]="abcabcabc";
int i;
char a='a';
puts(s);
del(s, a);
printf("%s",s);
return 0;
}追答