设计函数 void delcharfun(char *str,char ch)实现从字符串str中删除指定的字符ch。同一字母的大、小写按不同字符处理。
输入与输出要求:
输入一个长度不超过100的非空字符串与一个字符,代表需要处理的字符串与需要从字符串中删除的字符。其中字符串中不会出现空格、换行符。输出删除指定字符以后的字符串,占一行。如果删除指定字符后字符串变为空串,则直接输出空行。
隐蔽的错误
#include<stdio.h>
#include<string.h>
void delcharfun(char *str,char ch);
int main()
{
int i;
char str[101],ch;
scanf("%s",str);
getchar();
scanf("%c",&ch);
delcharfun(str,ch);
printf("%s",str);
return 0;
}
void delcharfun(char *str,char ch)
{
for(int i=0;i<strlen(str);i++)
{
if(*(str+i)==ch)
{
for(int j=i;j<strlen(str);j++)
{
*(str+j)=*(str+j+1);
}
}
}
}
PS(当题目不过时,一定是程序的某一处有问题,这时候不要想当然,即使题目给的例子对了,也要结合例子的特点再想反例,)
艰难的改正
#include<stdio.h>
#include<string.h>
void delcharfun(char *str,char ch);
int main()
{
int i;
char str[101],ch;
scanf("%s",str);
getchar();
scanf("%c",&ch);
delcharfun(str,ch);
printf("%s",str);
return 0;
}
void delcharfun(char *str,char ch)
{
for(int i=0;i<strlen(str);)
{
if(*(str+i)==ch)
{
for(int j=i;j<strlen(str);j++)
{
*(str+j)=*(str+j+1);
}
}
else
{
i++;
}
}
}