| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 650 人关注过本帖
标题:字符串包含函数有何错误
只看楼主 加入收藏
qq110224037
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-5-7
收藏
 问题点数:0 回复次数:6 
字符串包含函数有何错误
小弟写了一个字符串包含函数,不知道是什么地方错了 请高手指教!STR1包含STR2 则 返回1 不包含返回0

#include "stdio.h"
#include "string.h"
main()
{ int ca(char str1[],char str2[]);
char str1[]="abcdefg",str2[]="efg";
printf("%d",ca(str1,str2));

}
int ca(char str1[],char str2[])
{char *p1=str1,*p2=str2; int i=0;
while(p1)
{
if(*p2==*p1&&*p2!='\0')
{ p2++,p1++,i=i+1;}

else p1++;
}

if (i==strlen(str2))
return 1;
else
return 0;

}
搜索更多相关主题的帖子: 何错误 函数 字符 
2007-05-09 09:33
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 

#include "stdio.h"
#include "string.h"
main()
{
int ca(char str1[],char str2[]);//你这个地方用的竟然是汉字输入里的分号.以后要注意
char str1[]="abcdefg",str2[]="efg";
printf("%d\n",ca(str1,str2));

}
int ca(char str1[],char str2[])
{
char *p1=str1,*p2=str2; int i=0;
while(*p1)//p1代表的是地址它是不会等于0的,
{
if(*p2==*p1&&*p2!='\0')
{
p2++,p1++,i=i+1;
}
else p1++;
}

if (i==strlen(str2))
return 1;
else
return 0;
}


2007-05-09 09:47
qq110224037
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-5-7
收藏
得分:0 
回复:(qq110224037)字符串包含函数有何错误

thank you ! 非常多谢指教 。。自己检查自己的错误真是困难。

2007-05-09 11:02
caoshangfei
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-5-3
收藏
得分:0 
以后细心点就是了,呵呵,我初学的时候也是这样
2007-05-09 20:32
爱以走远
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:7542
专家分:21
注 册:2007-3-16
收藏
得分:0 

一些小问题 开始就要注意 不是习惯拉就不好改拉


   好好活着,因为我们会死很久!!!
2007-05-09 21:32
jeon_chen
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-5-9
收藏
得分:0 

上面的程序没有解决问题,下面这种情况没考虑到:
1、如果str1包含str2的前n个字符(n<strlen(str2)),则程序是错的。

所以我自己写了下,代码如下:

程序代码:

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

void cat(char *str1,char *str2)
{
char *pS; /* 大字符串指针*/
char *pD; /* 小字符串指针*/
int status = 0; /* 位置,返回 */
int count = 0; /* 计算相等字符数,以便位置移动*/

pS = str1;
pD = str2;

while(*pS != 0) /*大字符串末尾*/
{
if (*pS == *pD) /*如果字符相等,移动两个字符串指针,并且相等字符数+1*/
{
pS++;
pD++;
count++;
}
else /*如果字符不相等,只移动大字符串指针,并且将小字符串指针定位到首字符,同时移动位置到当前位置,且将计数变量赋0*/
{
pS++;
pD = str2;
status += count + 1;
count = 0;
}

if (*pD == 0) /* 已经找到了,退出while循环,以节约开支 */
break;
}

if (*pD == 0) /*成功包含*/
{
printf(\"\nStr1 include str2!\");
printf(\"\nAnd the status is:%d\n\",status);
}
else /*不包含*/
{
printf(\"\nStr1 do not include str2!\n\");
}
}

int main(void)
{
char str1[] = \"abcegdfceg\";
char str2[] = \"cefg\";

cat(str1,str2);
return 0;
}

2007-05-09 22:46
qq110224037
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-5-7
收藏
得分:0 
回复:(jeon_chen)上面的程序没有解决问题,下面这种...
说真的楼上能为俺这么仔细的察,我非常感谢
但你的程序倒是不能运行通过 不信 你用 str1=abcdefg str2=cefg 求str1包含str2试试

我的程序 str1=abcdefg str2=abcdefga可以通过

2007-05-15 10:58
快速回复:字符串包含函数有何错误
数据加载中...
 
   



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

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