| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 591 人关注过本帖
标题:想不出来什么意思 帮忙解释下这个程序,给点标注。万分感谢!
只看楼主 加入收藏
zhouzhoucool
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-3-22
收藏
 问题点数:0 回复次数:4 
想不出来什么意思 帮忙解释下这个程序,给点标注。万分感谢!
# include <stdio.h>

int find_substr(char* s1, char* s2);

void main()
{
    if(find_substr("C fun is o", "is") ==6)
        printf("Substring is found.\n");
else printf("not.\n");
    
}

/* 定义子函数 */
int find_substr(char* s1, char* s2)
{
    register int t;
    char *p, *p2;

    for(t=0; s1[t]; t++)
    {
        p = &s1[t]; /*这里什么意思*/
        p2 = s2; /*这里为什么不用p2=&s2 */

        while(*p2 && *p2==*p)/*这个循环有什么用吗?*/
        {
            p++;
            p2++;
        }
        if(! *p2)    /*这里又是什么意思*/
            return t;
    }
    return -1;
}
搜索更多相关主题的帖子: char int 
2008-04-14 13:13
闪闪4521
Rank: 1
等 级:新手上路
帖 子:196
专家分:0
注 册:2007-11-30
收藏
得分:0 
这是一个查找前一个字符串中是否包含后一个字符串的程序
不过考虑的不完全
p = &s1[t]; /*这里什么意思*/
这里s1[t]表示的是一个字符所以用&使指针p指向这个字符
 p2 = s2; /*这里为什么不用p2=&s2 */
s2也是一个指针所以可以直接赋值
while(*p2 && *p2==*p)/*这个循环有什么用吗?*/
        {
            p++;
            p2++;
        }
当p2指向的直与p指向的值相等时,各自指向下一个
即p->i,p2->i时
然后继续比较他们下一个字符,直到不相等或p2结束
if(! *p2)    /*这里又是什么意思*/
 return t;
即p2指向字符串末尾
就是上一个while循环结束了,在s1中找到了s2中的字符串
返回t

[[it] 本帖最后由 闪闪4521 于 2008-4-14 13:33 编辑 [/it]]
2008-04-14 13:32
bianfeng
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2007-11-28
收藏
得分:0 
p = &s1[t]; /*p指向s1,指向指针的指针*/
p指向s1,而s1又指向实参字符串的地址.

[[it] 本帖最后由 bianfeng 于 2008-4-14 14:42 编辑 [/it]]
2008-04-14 14:40
闪闪4521
Rank: 1
等 级:新手上路
帖 子:196
专家分:0
注 册:2007-11-30
收藏
得分:0 
如果是指向指针的指针定义的时候应该定义成
char **p;
2008-04-14 14:47
zhouzhoucool
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-3-22
收藏
得分:0 
领教了 ,为什么好多程序 我都是看了似懂非懂啊
真是郁闷~~
闪闪  谢谢你的指导 ~~~
2008-04-14 15:52
快速回复:想不出来什么意思 帮忙解释下这个程序,给点标注。万分感谢!
数据加载中...
 
   



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

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