| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12127 人关注过本帖
标题:求教在一个字符串中查找指定字符串
只看楼主 加入收藏
c3242404
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-6-22
结帖率:100%
收藏
已结贴  问题点数:12 回复次数:4 
求教在一个字符串中查找指定字符串
函数stringIn()接收两个字符串指针,如果第二个字符串被包含在第一个字符串中,则返回被包含的字符串开始的地址,否则返回空指针,比如:
stringIn("hate", "at")返回a的地址
程序代码:
#include <stdio.h>
#define SIZE 81
char *stringIn(char *str1, char *str2);

int main(void)
{ 
    char string1[SIZE];
    char string2[SIZE];
    char *p;

    printf ("输入一个字符串:\n");
    gets(string1);

    while (*string1 != 'q')
    {
        printf("输入要查找的字符串:\n");
        gets(string2);
        p = stringIn(string1, string2);
        
        if (p)
        {
            printf("找到字符串:\n");
            puts(p);
        }
        else
            printf("未找到字符串。\n");

        printf ("\n输入一个字符串:\n");
        gets(string1);
    } // endof while

    printf("程序结束\n");

    return 0;
} // endof main


char *stringIn(char *str1, char *str2)
{
    char *p1 = str1;
    char *p2 = str2;

    if ('\0'==*str1 || '\0'==*str2)
        return NULL;

    while (1)
    {
        if (*str1 == *str2) // 如果str1的字符与str2字符相同
        {
            if ('\0' == *++str2) // 判断str2是否结束
                return p1;
            if ('\0' == *++str1) // 若str1结束,str2未结束,则返回空指针
                return NULL;
        } // endof if
        else
        {
            if ('\0' == *++str1)
                return NULL;
            p1 = str1;
            str2 = p2;
        } // endof else
    } // endof while
} // endof stringIn

如果有str2 = p2;则当有几个重复字符的时候无法正确找出字符串 如:
[local]1[/local]
而如果没有str2 = p2;则从str2的最后一个字符开始输出 如:
[local]2[/local]
想问下问题出在哪里

[此贴子已经被作者于2015-10-29 22:19编辑过]

搜索更多相关主题的帖子: 字符串 
2015-10-29 22:17
c3242404
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-6-22
收藏
得分:0 
补上图
有str2 = p2;时
图片附件: 游客没有浏览图片的权限,请 登录注册

没有str2 = p2;时
图片附件: 游客没有浏览图片的权限,请 登录注册
2015-10-29 22:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
你這個程序的解決思路一開始就有問題。先不說你用'q'作輸入結束標志的不合理,單看你查找那裏不涉及串的長度就肯定有錯。

授人以渔,不授人以鱼。
2015-10-29 23:42
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:7 
有个比较有名气的算法叫神马KMP算法的

DO IT YOURSELF !
2015-10-30 09:24
c3242404
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-6-22
收藏
得分:0 
感谢提供信息,正在学习KMP算法中
2015-11-01 15:42
快速回复:求教在一个字符串中查找指定字符串
数据加载中...
 
   



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

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