• 字符串中的assert和strcat


    assert:函数原型是:void assert( int expression );其作用是现计算表达式 expression ,如果其值为(即为0),那么它先 stderr 打印一条出信息,然后通过调用 abort终止程序运行。使用assert 的缺点是,频繁的调用会影响程序的性能,增加额外的开销。(需要包含头文件#include assert.h)

    strcat:函数原型是char *strcat(char *dest, const char *src);使用方src所指向的字符串(包括'\0')复制到dest所指向的字符串后面(删除*dest原来末尾的'\0')。要保证*dest足够长,以容纳被复制进*src中原有的字符不变,返回指向dest的指针。

    assert--代码展示

    1. #include
    2. #include
    3. int main()
    4. {
    5. char* mystrcpy(char *a,char *b)
    6. {
    7. assert(a != NULL && b != NULL);//调用断言
    8. char *result = a;//保存a的地址
    9. while(*b != '\0')
    10. {
    11. *a++ = *b++;//b的值给a并开始偏移
    12. }
    13. *a = '\0';//b=‘\0’后a=‘\0’
    14. return result;
    15. }
    16. char a[128] = {'\0'};
    17. char *b = "hello word";
    18. char *c = NULL;//验证断言
    19. mystrcpy(a,b);//不会断言正常输出
    20. puts(a);
    21. mystrcpy(c,b);//断言后会终止程序
    22. puts(c);
    23. return 0;
    24. }

    10700442ebe74aedb451877f9f5a723a.png


    strcat--代码展示

    1. #include
    2. #include
    3. #include
    4. char* mystrcat(char *dest,char *src)
    5. {
    6. assert(dest != NULL && src != NULL);
    7. char *result = dest;
    8. while(*dest != '\0')
    9. {
    10. dest++;//不等于'\0'发生偏移
    11. }
    12. while(*src != '\0')
    13. {
    14. *dest++ = *src++;
    15. }
    16. *dest = '\0';
    17. return result;
    18. }
    19. int main()
    20. {
    21. char a[128] = "hello ";
    22. char *b = "world";
    23. char *c;
    24. c = mystrcat(a,b);//将b拼接给a
    25. puts(c);
    26. return 0;
    27. }

    5e5c84252d184aca8b77f52a5ea46eb9.png

  • 相关阅读:
    uboot 和 内存地址
    Mybatis学习笔记8 查询返回专题
    以前端视角,漫谈「云端」
    一文读透react精髓
    MySQL binlog集市的项目小结
    KY95 Old Bill
    HTML制作个人网页制作(简单静态HTML个人博客网页作品)
    Charles的功能操作
    Android初学 抖音短视频无水印下载APP的实现
    mssql ,数据库还原BAK命令行方式
  • 原文地址:https://blog.csdn.net/2301_78772787/article/details/134071061