C中字符结尾‘\0’的作用

这几天看到有讲解Strcat函数原型的,在里面发现一个极其有趣的用法

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
char *strca(char *dst, const char * src)
{
        char *dst_t;
        dst_t = (char *)malloc(sizeof(dst) + sizeof(src));
        char *start = dst_t;
        assert(dst && src);
        while(*dst_t = *dst)   //是不会进行越界的,默认‘\0’类似“0”,然后跳出
        {
                dst_t++; dst++;
        }
        while(*dst_t = *src)
        {
                dst_t++; src++;
        }
        *dst_t = '\0';
        return start;
}

int main()
{
        char *dst = {"wo ai "};
        char *src = {"wo de guo jia !"};
        printf("%s\n",strca(dst,src));
        return 0;
}

中间直接用*dst进行判断没有发生C++中的越界的行为。

编译器‘\0’默认为假,从而跳出判断。   这一点简直比指针省事多了!

posted on 2016-03-14 18:39  RenewDo  阅读(490)  评论(0编辑  收藏  举报

导航