编写函数fun,函数的功能是:从字符串中删除指定的字符。同一字母的大、小写按 不同字符处理。

#include<stdio.h>
#include<string.h>
int main()
{
int jian(char *,char);
char s[30],c='k';
printf("Input the string:\n");
gets(s);
printf("Input the string:\n");
c=getchar();
if(jian(s,c))
printf("%s\n",s);
else
printf("RUN ERROR!\n");
return 1;
}
/*实现删除字符的功能函数*/
int jian(char *n,char m)
{
int i=0;
while(n[i])
{
if(n[i]==m)
strcpy(&n[i],&n[i+1]),i--; /*查找目标字符,并将其删除*/
i++;
}
return 1;
}
谁可以帮忙解释一下这个程序?明天小班讨论要用到。越详细越好。

#include<stdio.h>
#include<string.h>
int main()
{
int jian(char *,char); //申明一个自定义函数
char s[30],c='k'; //申明一个容量为30的字符数组,申明字符变量c并初始化为k
printf("Input the string:\n"); //输出input the string
gets(s); //读取用户输入的字符串并存入字符数组s
printf("Input the string:\n"); //输出input the string
c=getchar(); //读取用户输入的字符,赋值于变量c
if(jian(s,c)) //如果函数jian(s,c)返回的为真,则运行下面
printf("%s\n",s); //打印字符数组s
else //如果函数jian(s,c)返回的为假,则运行下面
printf("RUN ERROR!\n"); //打印RUN ERROR
return 1; //结束程序
}
/*实现删除字符的功能函数*/
int jian(char *n,char m) //构建jian函数
{
int i=0; //申明整型变量i并初始化为0
while(n[i]) //当n为真,则实现循环
{
if(n[i]==m) //如果n[i]等于m,则
strcpy(&n[i],&n[i+1]),i--; /*查找目标字符,并将其删除*/
i++;
}
return 1; 返回真
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-26
int jian(char *n,char m)
{
int i=0;
while(n[i])
{
if(n[i]==m)
strcpy(&n[i],&n[i+1]),i--; //这一句的意思即是:如果n[i] 就是要删除的字符, 将
i++; //数组 n 里面的数据依次前移一位, 即把n[i+1] 覆盖掉 要删除
} //的字符 n[i], 然后 i-- 以确保下次 i 还是指向 n[i],因为现在的
return 1; //n[i]是先前的n[i+1]
}