| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 451 人关注过本帖
标题:我有错!!
只看楼主 加入收藏
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
结帖率:100%
收藏
 问题点数:0 回复次数:5 
我有错!!

//删除a里 b的字符串(不是字符),如:a:abcababcbacab,b:abc;得出结果是abbacab,不是连续出现的不删除
#include<stdio.h>
#include<string.h>

char *select(char *result,char *des,char *src)
{
char *tempResult=result;//results的移标
char *record=des;//位置记录
char *tempDes=des;//des的移标
char *tempSrc=src;//src的移标
while(*tempDes) //list des
{
record=tempDes;//记录当前位置。
tempSrc=src;
if(*tempDes==*tempSrc) //如果第一个相等
{
while((*tempDes++ == *tempSrc++))//如果全部都等
{

if(*tempSrc == '\0')
record=tempDes;//移标复位
}
tempDes=record; //如果只有一部分等
}
*tempResult++=*tempDes++;//把不等的部分记录下来
}
return result;//返回新记录
}

int main(void)
{
char a[]="abcababcbacab";
char b[]="abc";
char c[50];
char *p=c;
p=select(p,a,b);
printf("%s\n",p);
return 0;
}

2007-03-13 14:21
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 
测试不行哦,有乱码
2007-03-13 14:23
★红狼
Rank: 2
等 级:论坛游民
帖 子:190
专家分:17
注 册:2006-7-12
收藏
得分:0 
以下是引用anthony634在2007-3-13 14:21:36的发言:

//删除a里 b的字符串(不是字符),如:a:abcababcbacab,b:abc;得出结果是abbacab,不是连续出现的不删除
#include<stdio.h>
#include<string.h>

char *select(char *result,char *des,char *src) //指针函数和地下的 不一致
{
char *tempResult=result;//results的移标
char *record=des;//位置记录
char *tempDes=des;//des的移标
char *tempSrc=src;//src的移标
while(*tempDes) //list des
{
record=tempDes;//记录当前位置。
tempSrc=src;
if(*tempDes==*tempSrc) //如果第一个相等
{
while((*tempDes++ == *tempSrc++))//如果全部都等
{

if(*tempSrc == '\0')
record=tempDes;//移标复位
}
tempDes=record; //如果只有一部分等
}
*tempResult++=*tempDes++;//把不等的部分记录下来
}
return result;//返回新记录
}

int main(void)
{
char a[]="abcababcbacab";
char b[]="abc";
char c[50];
char *p=c;
p=select(p,a,b);
printf("%s\n",p);
return 0;
}

如:a:abcababcbacab,b:abc;得出结果是abbacab, 这个是真确结果么?

2007-03-13 15:22
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
数组要先赋值

雁无留踪之意,水无取影之心
2007-03-13 16:31
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
int main(void)
{
char a[]="abcababcbacab";
char b[]="abc";
char c[50]="";
char *p=c;
p=select(p,a,b);
printf("%s\n",p);
return 0;
}

雁无留踪之意,水无取影之心
2007-03-13 16:32
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 
你们修改了之后都编译过了的么?我编译后得不到想要的答案哦,前几天发现其他组合可以的,只是不知道这个组合为什么不行,后来在最后匹配的情况下,加上'\0'才可以.因为最后匹配时没又加结束符号

[此贴子已经被作者于2007-3-19 14:38:54编辑过]


2007-03-19 14:35
快速回复:我有错!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019298 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved