| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 367 人关注过本帖
标题:这个问题麻烦看下
只看楼主 加入收藏
SaberLion
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:85
专家分:348
注 册:2014-1-4
结帖率:100%
收藏
 问题点数:0 回复次数:3 
这个问题麻烦看下
程序代码:
char * pr(char * s1,char * s2)           //  s1,s2 接受两个字符串数组
{
    int m1,m2,i,n;
    char * ptr;

    m1 = strlen(s1);
    m2 = strlen(s2);
    for(i = 0,n = 0;i < m1;i++,n++)
    {
        if(s1[i] == s2[0])                       //  当s1有一个字符和s2[0]相等就进入内循环且只进入一次
        {
            for(ptr = &s1[i],i = 1;;i++)        //  内循环   后面连续的字符相等   i自加     
            {
                if(s1[n + 1] != s2[i])                //   当出现不相等就退出循环
                    break;
            }
            break;
        }
    }
    return i == m2 ? ptr : NULL;   //  这边判断i(就是相等的字符)是否和s2 长度相等  相等就说明s1中有s2
}


我的问题就是为什么每次s2是个字符数大于2的字符串时  这个程序都返回的NULL(s2小于等于2的情况程序能按照期望运行)
我用printf看 i每次最大只能自加到2  这是什么情况?
2014-02-06 15:46
SaberLion
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:85
专家分:348
注 册:2014-1-4
收藏
得分:0 
找到问题所在了
内循环if(s1[n + 1] != s2[i])  要改为 if(s1[n + i] != s2[i])
忘记n不再自加了
2014-02-06 16:24
tianwen0921
Rank: 2
等 级:论坛游民
帖 子:18
专家分:44
注 册:2014-1-27
收藏
得分:0 
恭喜你自己找到问题所在,这类问题可以利用单步循环的方法进行调试,可以清晰地了解每一步值的变化
2014-02-07 10:33
快速回复:这个问题麻烦看下
数据加载中...
 
   



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

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