永发信息网

C语言中设计一个函数,可以删除一个字符串中所有指定字符

答案:3  悬赏:80  手机版
解决时间 2021-03-06 20:42
#include <stdio.h>
#include <string.h>
void del(char *p1,char *p2){
int i,j;
for(i=0;i<(strlen(p2));i++){
for(j=0;j<(strlen(p1));j++){
if(p1[j]==p2[i]){
p1[j]='';
}
}
}
}
int main(){
void del(char *p1,char*p2);
char a[80],b[80];
char *p1=a;
char *p2=b;
printf("请输入一个字符串:");
gets(p1);
printf("请输入要删除的字符串:");
gets(p2);
del(p1,p2);
printf("删除后的字符串为:",p1);
return 0;
}
应如何修改????
删除字符串中的指定的子字符串
最佳答案
修改后,删除字符:

#include <stdio.h>
#include <string.h>

void del(char *p1,char *p2)
{
int i,j,k = 0;
char t[80] = {0};

for(i=0;i<(strlen(p1));i++)
{
for(j=0;j<(strlen(p2));j++)
{
if(p1[i]==p2[j])
{
break;
}
}
if(j >= strlen(p2))
{
t[k++] = p1[i];
}
}

memset(p1,0,80);
memcpy(p1,t,k);
}
int main()
{
void del(char *p1,char*p2);
char a[80],b[80];
char *p1=a;
char *p2=b;

printf("请输入一个字符串:");
gets(p1);
printf("请输入要删除的字符串:");
gets(p2);
del(p1,p2);
printf("删除后的字符串为:%s",p1);
return 0;
}
全部回答
'C语言中设计一个函数,可以删除一个字符串中所有指定字符' 是删除指定的'字符' 还是'字符串'?? 代码中是'字符串', 有必要先问下LZ的意图
下面函数在p1中删除p2中出现的任何字符。 void delall(char *p1, char *p2) { char *pNext, *p; // NULL string is ignored. if(NULL == p1 || NULL == p2) return; for(pNext=p1; *pNext; pNext++){ // Find current char in p2. for(p=p2; *p; p++){ if(*pNext == *p){ // Skip char found in p2. break; } } // Append next char to result. *p1 = *pNext; // Increase result point when this char not found int p2. if(!*p) *p1 ++; } *p1 = 0; } 删除串比较麻烦,删除一个子串后可能会在原字符串中构造出一个新的子串,所以处理起来不是太简单,比如输入字符串:abcdeddefeffghijklmn,从中删除def 如果不计较效率的话重新扫描那部分回退到p1开始就行了,更清晰点。 下面函数在p1中删除p2字符串。 void del(char *p1, char *p2) { char *p; int len1, len2; // NULL string is ignored. if(NULL == p1 || NULL == p2) return; len1 = strlen(p1); len2 = strlen(p2); // p2 is not a substring of p1. if(len2 > len1) return; // Find p2 in p1. for(p=p1; len1 >= len2; p++, len1--){ if(strncmp(p, p2, len2) == 0){ memmove(p, (p+len2), (len1-len2)); *(p+(len1-len2)) = 0; // End of string. // Rewind pointer to string start // (memmove may construct a new string p2 in p1). if((p - p1) > len2){ p -= len2; len1 += len2; }else{ p = p1; len1 = strlen(p1); } continue; } } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中东和东南亚有什么好书(名著)
某地区在推进美丽乡村建设过程中,按照“一村
洋葱怕冻吗
新银宫浴场地址在哪,我要去那里办事
有没有那种不需要连接网络的单机游戏 在火车
【中国最早的文字】目前公认的中国最早的文字
作文鲜花和掌声的背后
西安哪里有卖火车模型?
卖出套期保值中的实际销售价怎么算?
picnic plans的英语作文
尚品宫自助烤肉在什么地方啊,我要过去处理事
时尚的英文怎么写?
江西远大服装雨衣厂在什么地方啊,我要过去处
学习嵌入式开发选择三星s5pv210与exynos 4412
湘潭大学女生宿舍冬季取暖问题求解
推荐资讯
给严重缺氧的病人输氧时,要在纯氧中混入5%的
佝偻病激期骨骼X线改变错误的是()A.骨骺软骨
将抛物线y=ax^2+b向左平移2个单位长度后经过
从环境的角度看,a、b两图中交通工具的主要区
①五星电器广场将一种空调按进价提高40%,然后
如何将access表或查询按每条记录分别导出到一
巨人教育(北京海淀区)地址在什么地方,我要处
谁有CSOL的号吗?
小鱼在河里什么的游来游去
我和我未来的公公说好七点见面 可是我临时去
在道路旅游客运管理工作中,对不定点定线的旅
商业保险有年龄限制吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?