求高手编写两个c语言小程序

1.编写程序,从给定的字符串中删除一个特定的字母。2.编写程序,从给定的字符串中删除一个特定的字符串。(主要是第二个)... 1.编写程序,从给定的字符串中删除一个特定的字母。
2.编写程序,从给定的字符串中删除一个特定的字符串。(主要是第二个)
展开
 我来答
占座专用ID
2012-12-06 · TA获得超过235个赞
知道小有建树答主
回答量:217
采纳率:0%
帮助的人:199万
展开全部
第一题:

#include <stdio.h>
void main()
{
char arr[100],ch,result[100];
int i,j=0;
printf("输入字符串(1-99个字符):\n");
gets(arr);
printf("输入要删除的字符:\n");
ch=getchar();
for (i=0;arr[i]!='\0';i++)
{
if (arr[i]!=ch)
{
result[j++]=arr[i];
}
}
result[j]='\0';
printf("删除后结果:\n%s\n",result);
}

第二题

#include <stdio.h>
int find(char *str,char *sub,int start) //从start开始查找str中是否存在子串sub,存在返回子串匹配后的结束位置+1,不存在返回0
{
int i,j=0;
for (i=start;str[i]!='\0';i++)
{
if (str[i]==sub[j])
{
j++;
if(sub[j]=='\0') //匹配成功
{return i+1;}
}
else
{
return -1;
}
}
return -1;
}
void main()
{
char arr[100],sub[100],result[100];
int i,j=0,_sub;
printf("输入字符串(1-99个字符):\n");
gets(arr);
printf("输入要删除的字符:\n");
gets(sub);
for (i=0;arr[i]!='\0';)
{
_sub=find(arr,sub,i);
if (_sub==-1) //不匹配,进行赋值
{
result[j++]=arr[i++];
}
else //匹配,i向后移动到子串长度+1再进行匹配
{
i=_sub;
}
}
result[j]='\0';
printf("删除后结果:\n%s\n",result);
}
sj_wei1989
2012-12-06 · 超过28用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:56.5万
展开全部
给你一个思路
str1 字符串
str2 所谓特定字符串

通过strstr先判断字符串中是否存在特定的字符串。

if(strstr(str1,str2))

{
//存在

//通过strtok

char *p=strtok(str1,str2 );

char *p1=strtok(NULL,str2);

然后通过strcat将两个拼出来

}

希望能帮到你
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式