zoukankan      html  css  js  c++  java
  • 字符串比较函数实现,超简单的面试题,回过头来发现原来我的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++了
  • 相关阅读:
    计算机网络复习(二) 应用层
    JavaScript实战笔记(二) 数组去重
    计算机网络复习(一) 基本介绍
    计算机网络复习
    Git学习笔记(一) 常用命令
    Git学习笔记
    Python实战笔记(三) 多线程
    Python实战笔记(二) 网络编程
    Python学习笔记
    XBox360自制系统的更新(Update)
  • 原文地址:https://www.cnblogs.com/dont27/p/2208037.html
Copyright © 2011-2022 走看看