• 字符串比较函数实现,超简单的面试题,回过头来发现原来我的c多么的薄弱


    今天某个公司面试,尽管报了个测试类的,但是面试依旧不给力,先是写个字符串比较函数,只判断相等和不相等的情况,当时大概这么写的:

    #include<stdio.h>

    bool strCompare(char *str1,char *str2){
    char *s1=str1,*s2=str2;
    printf("%c and %c\n",*s1,*s2);
    while(s1&&s2){
    if(*s1!=*s2){
    printf("%c and %c\n",*s1,*s2);//调试专用
    printf("test\n");
    return false;
    }
    s1++;
    s2++;
    }
    if(!s1&&!s2)return true;
    return false;
    }

    int main(){
    char st1[]="baibai";
    char st2[]="baibai";
    char st3[]="daibai";
    if(strCompare(st1,st2))printf("success\n");
    else printf("fail\n%c\n",*st1);
    if(strCompare(st1,st3))printf("fail\n");
    else printf("success\n");
    }

    shit,回来测试一下,发现第一个用例错了,截图如下

    然后一直觉得是不是cfree问题,后来去vs2008那边逐行调试了一下,才知道自己弱爆了:

    bool strCompare(char *str1,char *str2){
    char *s1=str1,*s2=str2;
    printf("%c and %c\n",*s1,*s2);
    while(*s1&&*s2){
    if(*s1!=*s2){
    printf("%c and %c\n",*s1,*s2);
    printf("test\n");
    return false;
    }
    s1++;
    s2++;
    }
    if(!*s1&&!*s2)return true;
    return false;
    }

    看到木有,丫的,居然是因为那个while判断出问题了,太久没用c还是说根本没把c当一回事。

    那时思考:

    要是是while(s1&&s2)的话,遍历到最后(字符串结尾)还会一直遍历。实际上就是遍历到真正没有地址的时候才停下来(不知道这么说对不对,求指正),这个时候s1跟s2存的数值是神马,就不得而知了。

    唉,发现了错误之后,还是感觉挺爽的,但是为自己如此弱的水平,实在感慨……神马招聘都不敢报c++了
  • 相关阅读:
    主席树学习笔记(静态区间第k大)
    p1156 题解(未完全解决)
    树上神奇 逆 逆序对(我的叫法)hh的小纸条 重中之重!!!!!
    二叉查找树学习笔记(BST)
    负环...坑点
    差分约束系统学习笔记
    tarjan学习(复习)笔记(持续更新)(各类找环模板)
    分层图食用简介
    js数组方法
    灵动标签调用父栏目下的所有文章
  • 原文地址:https://www.cnblogs.com/dont27/p/2208037.html
Copyright © 2020-2023  润新知