吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3546|回复: 26
收起左侧

[C&C++ 转载] 用最少的分号实现strstr函数

[复制链接]
追梦少年_66 发表于 2017-12-14 13:20
本帖最后由 追梦少年_66 于 2017-12-14 20:56 编辑

1、用最少的分号实现strstr函数
2、不使用逗号
3、不使用系统的字符串库函数
4、需判断是否为NULL


[Asm] 纯文本查看 复制代码
char * mystrstr4(char *str1, char*str2) {
	if (str1&&str2) {
		char * p2 = str2;
		while (*str1) {
			while (*p2 && *str1 &&*str1++ == *p2 && *p2++);
			if (*p2) {
				return str1 - (p2 - str2);
			}
			str1 = str1 - (p2 - str2);
			p2 = str2;
		}
	}
	return NULL;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

SeriousSnow 发表于 2017-12-14 15:11
追梦少年_66 发表于 2017-12-14 14:46
8个分号你行不行,兄弟,不行就被说话

[C] 纯文本查看 复制代码
char * Mystrstr(const char *str1, const char *str2)
{
	
	char *s;
	if (!*str2)
		return (char *)str1;

	while (*str1)
	{
		s = str2;
		while (*str1 && *s && *str1 == *s)
		{
			str1++;
			s++;
		}
		if (!*s)
			return (char *)str1 - (s - str2);
		str1++;
	}
	return NULL;
}

不用逗号
8个分号
苏紫方璇 发表于 2017-12-14 17:59
代码不是我写的,没验证过,摘自百度百科strstr
[C] 纯文本查看 复制代码
char *strstr(const char*s1,const char*s2)
{
    int n;
    if(*s2)
    {
        while(*s1)
        {
            for(n=0;*(s1+n)==*(s2+n);n++)
            {
                if(!*(s2+n+1))
                    return (char*)s1;
            }
            s1++;
        }
        return NULL;
    }
    else
        return (char*)s1;
}
SeriousSnow 发表于 2017-12-14 14:19
我再来怼你一次。你讽刺了我两次。
模式匹配算法。KMP你8个分号我看看。BF你就别来得瑟了。
 楼主| 追梦少年_66 发表于 2017-12-14 14:46
SeriousSnow 发表于 2017-12-14 14:19
我再来怼你一次。你讽刺了我两次。
模式匹配算法。KMP你8个分号我看看。BF你就别来得瑟了。

8个分号你行不行,兄弟,不行就被说话
 楼主| 追梦少年_66 发表于 2017-12-14 14:48
今天下午又写了一次kmp算法,确实是太妙了,给了我很多启发
另类飞翔 发表于 2017-12-14 14:56
这种帖子不是应该在水区吗?
这几天开了两次吾爱就看见两次,没觉得有多炫技的
 楼主| 追梦少年_66 发表于 2017-12-14 14:56
SeriousSnow 发表于 2017-12-14 14:19
我再来怼你一次。你讽刺了我两次。
模式匹配算法。KMP你8个分号我看看。BF你就别来得瑟了。

别说那些没用的废话了,你牛就把你的代码贴出来,不行就别在哪里bb,哥是发帖交流的,没空鸟你
 楼主| 追梦少年_66 发表于 2017-12-14 14:57
另类飞翔 发表于 2017-12-14 14:56
这种帖子不是应该在水区吗?
这几天开了两次吾爱就看见两次,没觉得有多炫技的

兄弟吧代码贴出来,我期待你的表演
 楼主| 追梦少年_66 发表于 2017-12-14 16:12
SeriousSnow 发表于 2017-12-14 15:11
[mw_shl_code=c,true]char * Mystrstr(const char *str1, const char *str2)
{
       

不错兄弟,你做到了这道题就是你赢了,说明你基本功很扎实。但是兄弟,我其实可以只要7个分号哟,嘿嘿
heqiu000 发表于 2017-12-14 16:16
谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 10:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表