| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1610 人关注过本帖
标题:[求助]查找一个string是否包含另一个string 请帮忙差错 
只看楼主 加入收藏
ellenwang23
Rank: 2
等 级:论坛游民
帖 子:27
专家分:10
注 册:2010-3-17
结帖率:100%
收藏
已结贴  问题点数:18 回复次数:13 
[求助]查找一个string是否包含另一个string 请帮忙差错 
我写的这个fuction是用来找是否st2---想要查找的词 是否在str----原文中存在
如果存在的话 就返回ISINLINE=1,如果没有就为0
简单的说一下我的这个函数的运行
就是说 从str2的第二个字母开始查找 (因为之前我读入的时候 第一个字母为空格) 
当遇到两个是相同的字母,那么两个string都后移一位,如果不相同,str2返回到第二个字母,str继续后移进行对比
在“//”之后的code是说 “.”是万能符,可以代表所有的字母,所以遇到它就说这两个字母是一样的
但是我的这段code完全不能正常运行,请大家帮忙改一下 非常感谢了!我在线等待
一下是code:

int myStrcmp(char str[],char str2[]){
   int b=0,c=1;
   int ISINLINE=0;
   int count=0;
   int lens;
   lens=strlen(str2);

   while(b=='\0'){
      while(c=='\0'){
//         if(str[b]=='.'){
//             str[b]==str2[c];
//         }

         if(str[b]==str2[c]){
             c++;
             b++;
             count++;
         }else{
             b++;
             c=1;
             count=0;
         }

      }
   }
   if (count==lens-1){
       ISINLINE=1;
   }else{
       ISINLINE=0;
   }
      return (ISINLINE);
}
搜索更多相关主题的帖子: string 
2010-05-23 10:56
冥卫
Rank: 8Rank: 8
来 自:深山老林
等 级:蝙蝠侠
帖 子:280
专家分:772
注 册:2010-4-20
收藏
得分:0 
帮忙顶

2010-05-23 11:43
ellenwang23
Rank: 2
等 级:论坛游民
帖 子:27
专家分:10
注 册:2010-3-17
收藏
得分:0 
谢谢您啊
我真的是在这里卡死了至少3个小时了
能力差 自己找不到
2010-05-23 12:08
ww稻草人
Rank: 5Rank: 5
来 自:陕西西安
等 级:职业侠客
帖 子:57
专家分:309
注 册:2010-5-11
收藏
得分:0 
while(b=='\0')和while(c=='\0')应该改为 while(str[b]=='\0'),while(str2[c]!='\0')


我的博客  http://blog..cn/daocaoren020
2010-05-23 13:07
ww稻草人
Rank: 5Rank: 5
来 自:陕西西安
等 级:职业侠客
帖 子:57
专家分:309
注 册:2010-5-11
收藏
得分:18 
你的错误大概如下:
1,循环的条件 while(b=='\0')和 while(c=='\0'),应该改为while(str[b]!='\0')和while(str2[c]!='\0'&&str[b]!='\0'),因为你只有字符串str没读到最后一个字符‘\0’时,你才停止;第二个循环中你在进行循环的时候,你还得检查字符串str是否越界,因为你写的那个while(str[b]!='\0')他只有在内循环结束时才会检查str是否越界。
2,这句 if(str[b]=='.'){ str[b]==str2[c];  }大括号内应该改为str[b]=str2[c];  ,因为你是在str[b]=='.'时,将strstr2[c]; 的字符赋给str[b],后面的if语句来判断他们相等。
大致就这两点错误吧。下面是我修改后你的代码:
int myStrcmp(char str[],char str2[]){
   int b=0,c=1;
   int ISINLINE=0;
   int count=0;
   int lens;
   lens=strlen(str2);

   while(str[b]!='\0'){
      while(str2[c]!='\0'&&str[b]!='\0'){
         if(str[b]=='.'){
             str[b]=str2[c];
         }

         if(str[b]==str2[c]){
             c++;
             b++;
             count++;
         }else{
             b++;
             c=1;
             count=0;
         }
        if (count==lens-1)
            {
                ISINLINE=1;
               return (ISINLINE);
            }
      }
   
   }
   
      return (ISINLINE);
}

注意:在输入字符串str和str2时用gets函数输入,要不然用scanf你str2中的空格不会被读入数组中,因为对scanf来说空格是分隔符他是不会被读入的,除非你的字符串在输入完成时,它会自动加个‘\0’表示该字符串结束。


我的博客  http://blog..cn/daocaoren020
2010-05-23 14:08
ellenwang23
Rank: 2
等 级:论坛游民
帖 子:27
专家分:10
注 册:2010-3-17
收藏
得分:0 
非常感谢!! 我先好好看一下 真的太谢谢了
2010-05-23 14:15
ellenwang23
Rank: 2
等 级:论坛游民
帖 子:27
专家分:10
注 册:2010-3-17
收藏
得分:0 
回复 4楼 ww稻草人
但是这位高人
你说的完全在理 除了那个while loop里 应该是写 如果达到这个情况 就跳出这个loop,所以应该是==而不是!=吧

还有一个重要的问题 就是 改了之后 依然不行啊
而且连while loop都进不去了

高人再帮我看看 成不 谢谢您了
2010-05-23 14:47
ellenwang23
Rank: 2
等 级:论坛游民
帖 子:27
专家分:10
注 册:2010-3-17
收藏
得分:0 
谁能帮我看看阿
2010-05-23 15:46
ww稻草人
Rank: 5Rank: 5
来 自:陕西西安
等 级:职业侠客
帖 子:57
专家分:309
注 册:2010-5-11
收藏
得分:0 
while(a)的意思是如果a为真则循环执行,也就是说while(str[b]!='\0')的意思是当str[b]不等于‘\0’是字符时时循环执行,那个代码是我调试好了的,出问题的话,就可能是你的调用时出的,要不你把你的完整代码发上来。

我的博客  http://blog..cn/daocaoren020
2010-05-23 17:08
ww稻草人
Rank: 5Rank: 5
来 自:陕西西安
等 级:职业侠客
帖 子:57
专家分:309
注 册:2010-5-11
收藏
得分:0 
这是我帮你测试时的完整代码:
#include<stdio.h>
#include<string.h>
int myStrcmp(char str[],char str2[]){
   int b=0,c=1;
   int ISINLINE=0;
   int count=0;
   int lens;
   lens=strlen(str2);
   while(str[b]!='\0'){
      while(str2[c]!='\0'&&str[b]!='\0'){
         if(str[b]=='.'){
             str[b]=str2[c];
         }

         if(str[b]==str2[c]){
             c++;
             b++;
             count++;
         }else{
             b++;
             c=1;
             count=0;
         }
        if (count==lens-1)
            {
                ISINLINE=1;
               return (ISINLINE);
            }
      }
   
   }
   
      return (ISINLINE);
}
main()
{
   char str[100],str2[20];
   printf("\n请输入str字符串:");
   gets(str);
   printf("\n请输入str2字符串:");
   gets(str2);
   if(myStrcmp(str,str2))
    printf("\nstr2在str里!");
   else  
      printf("\nstr2不在str里!");
}



你看看那不一样,要是还有问题你把你的完整代码发上来,我帮你看。

我的博客  http://blog..cn/daocaoren020
2010-05-23 17:14
快速回复:[求助]查找一个string是否包含另一个string 请帮忙差错 
数据加载中...
 
   



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

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