美文网首页
一个奇怪的坑点

一个奇怪的坑点

作者: 陌路晨曦 | 来源:发表于2017-03-23 01:04 被阅读0次

做作业的时候遇到的,昨天晚上折腾到一点多才找出来的bug,虽然想想是很弱智的问题,主要是定位花了一点时间;

int split(char *str,char **p)
{
    int j;
    while(*str == ' ') 
    {
        str++;
    }
    j = 0;
    while(*str!='\0')
    {
        *p = str;
        p++;
        str++;
        j++;
        while(*str != ' ')
        {
            str++;
        }
        
        while(*str == ' ')
        {
            *str = '\0';
            str++;
        }
    }
    return j;
} 

这段代码是用指针来在一串带空格的字符中剔除空格,输出各个单词。
乍一看没什么问题,我也是被坑了很久才发现问题在哪里的,是一个坑爹的逻辑问题。

while(*str != ' ')
        {
            str++;
        }

是这段循环造成死循环导致程序出问题的;
输入一串字符,如aaaa后面不带空格就会出问题,while会死循环。
为什么呢?
上面的while循环括号里的内容是str!=‘ ’;
意思是当条件满足时程序会进行下去,只有当
str == ' '时才会停止;
如果*str为a或者’\0‘程序都不会停止,会一直进行下去。当输入的字符串内容为|a|a|a|a|a|\0|的时候就没有终止条件了,字符数组内没有’ ‘,循环不会结束。会造成死循环,直到访问非法内存空间,编译器报错。
这是老师上课讲的,很明显的考虑不严谨未考虑到边界条件导致的错误;
她的本来想法应该是指针指向单词的第一个元素,通过上述循环跳过单词的剩余部分,只是循环条件考虑错了,想当然的想单词后面应该是空格,就用空格跳出循环;

相关文章

  • 一个奇怪的坑点

    做作业的时候遇到的,昨天晚上折腾到一点多才找出来的bug,虽然想想是很弱智的问题,主要是定位花了一点时间; 这段代...

  • 一个挖坑人的内心独白

    走着走着发现一个坑,还没明白到底怎么回事,又出现一个坑。太奇怪了,越往前走,坑越多,一个连着一个。走到最后才发现,...

  • 奇怪的饭点

    机场送完朋友,饿了,去了日思夜想的凯龙船广式餐厅。这家经常要等位一个小时以上,在下午三点这种奇怪的时间终于十几分钟...

  • 奇怪的泪点

    看杨超越的新剧会哭 看全职高手会哭 最近的泪点越来越奇怪了。 可能是里面的点真的触动人 可能就是单纯的想哭了 我知...

  • 奇怪的笑点

    1 身在潮汕地区,家里人全都说潮汕话,只有电视里才说普通话,可能是因为这样,儿子对普通话有一种莫名的感觉。 有一次...

  • 奇怪的泪点

    2019年4月6日 星期六 天气:晴 泪点,其实是一个人体结构。 泪点,又称泪小点、泪小孔。位于上、下睑缘泪乳头之...

  • 奇怪的光点

    今天晚上吃饭前,我望向窗边发现了一个非常亮的黄色光点,我觉得非常的奇怪,因为一般的,星星发不出这么亮的光,...

  • 假如我是面试官,我会这样虐你![Java岗]

    前言 每到年后,总会有很多人跳槽。可我发现一个奇怪的现象:那些跳槽的人,总是从一个坑,跳进令一个坑中。毕竟一年过去...

  • 寒冬凌冽:BAT、TMD一线名企精选面试题100道!附答案解析!

    前言 每到年后,总会有很多人跳槽。可我发现一个奇怪的现象:那些跳槽的人,总是从一个坑,跳进令一个坑中。毕竟一年过去...

  • java面试:假如我是面试官,我会这样虐你!

    前言 每到年后,总会有很多人跳槽。可我发现一个奇怪的现象:那些跳槽的人,总是从一个坑,跳进令一个坑中。毕竟一年过去...

网友评论

      本文标题:一个奇怪的坑点

      本文链接:https://www.haomeiwen.com/subject/bmoanttx.html