标题:今日散分帖,结帖了,呵呵。
只看楼主
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
得分:4 
对啊 遇空格就结束  这个真不知道 啥意思?
2011-08-05 15:33
a9517495424
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:305
专家分:139
注 册:2011-7-20
得分:4 
我是拿分的
2011-08-05 15:39
icysky
Rank: 5Rank: 5
来 自:心灵世界
等 级:职业侠客
威 望:1
帖 子:172
专家分:399
注 册:2011-5-17
得分:4 
程序代码:
#include <stdio.h>
#include <string.h>

int main()
{
    char * leftTrim(char *);
    char *str="           abcd";
    printf("%s\n",leftTrim(str));
    return 0;
}

char * leftTrim(char *str)

{

    while(*str == 0x20)

    {

        str ++;

    }

    return str;

}


!=换成==   别的没看出来了

不管怎么走、总有一个终点...
2011-08-05 15:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:4 
你们认真读程序啊,用逻辑思考啊。

授人以渔,不授人以鱼。
2011-08-05 15:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
想一下,如果一直都遇不到空格,那函数会怎样?不要想当然传入的字符串必定有空格的。学程序是学逻辑,不是学语法。
收到的鲜花
  • hellovfp2011-08-07 12:39 送鲜花  5朵   附言:说得不错。呵呵。

授人以渔,不授人以鱼。
2011-08-05 16:05
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
得分:0 
不是遇到空格就结束,是删除左边的空格吧?
如果一直没有空格,那么函数里的while不执行。
2011-08-05 16:14
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
一直没空格它就死循环。注意循环的入点:只要不是空格就一直循环,0!=0x32,是true,符合循环条件。唯一能够退出的运气是遇到0x32这个字符,这种机遇其实很少,就等于你设计菜单只有按下某个特定键才能结束菜单一样。

[ 本帖最后由 TonyDeng 于 2011-8-5 16:19 编辑 ]
收到的鲜花
  • hellovfp2011-08-07 12:29 送鲜花  10朵   附言:老兄没有得到分,这个系统有问题。

授人以渔,不授人以鱼。
2011-08-05 16:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
不管是读程序、还是写程序,都要把自己当作是计算机,在脑中将代码执行一遍,用各种各样可能的数据来执行,看代码有没有漏洞。1楼的函数,遇到0x20就结束循环,把当前的指针地址返回给调用者,宣称已经把左边的空格过滤掉了,这是什么逻辑?想象一下,传入的字符串形如"ab cd"这样的,它删左边的空格吗?这时返回得到的是"cd","ab"到哪了?

好,就算把!=改为==,再看:如果遇到空格就结束,对吗?仍然不对!这样只能滤掉第一个空格,不是左边所有的空格。

尝试把各种各样的字符串灌进去,看它有什么动作,哪里有漏洞,怎样修正这种漏洞。这样才是学程序的主要功课。写程序的时候,也是要这样不断地攻击自己的程序,检查有没有遗漏东西、是否有漏洞。不尝试攻击自己的程序,只凑对的结果,那是学不会写程序的,写出来的也是垃圾程序。

[ 本帖最后由 TonyDeng 于 2011-8-5 16:34 编辑 ]
收到的鲜花
  • hellovfp2011-08-07 12:30 送鲜花  5朵   附言:改成==会滤到左边空格的

授人以渔,不授人以鱼。
2011-08-05 16:33
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
得分:4 
10 楼正解
2011-08-05 16:33
youngpennyu
Rank: 2
等 级:论坛游民
帖 子:37
专家分:19
注 册:2011-6-13
得分:4 
分分分。。。
2011-08-05 16:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-346861-1-1.html




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

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