C-字符串

本文深入探讨了C语言中字符串的概念、表示方法、内存分配、长度计算以及相关函数的使用,包括如何通过字符串结束符确定其长度,并详细解释了经典字符串处理函数如strlen、strcpy、strcat等的基本原理和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C-字符串

  • 基本点

    • 从概念上讲, C语言中没有字符串数据类型
    • 在C语言中,是使用字符数组来模拟字符串
    • C语言中的字符串都是以’\0’结束的字符数组
    • C语言中的字符串可以分配与栈空间、堆空间或者只读存储区
    • 字符串的长度问题
      • 字符串的长度就是字符串中所包含的字符的个数
      • C语言中的字符串的长度指的是第一个’\0’前的字符个数
      • 即C语言是通过’\0’结束符来确定字符串的长度
  • 经典小例子

    • strlen函数的实现:
    //方式一
        int strlen(const char* s)
        {
            int length = 0;
            //assert(s);
            while(*s++)
            {
                length++;   
            }

            return length;
        } 
        //方式二
        int strlen(const char* s)
        {
            return ((assert(s)), (*s ? (strlen(s+1) + 1) : 0 ));
        } 
    -  不要重复制造轮子
        -  一般情况下, 不要去自行编写C标准库已经提供的函数, 这些函数效率安全一般都很高
        -  标准库提供的函数有时会使用汇编语言实现,目的就是充分利用机器所提供的特殊指令来最求最大速度
-  字符串相关函数
    -  不受限的字符串函数 strcpy, strcat, strcmp
        -  这些函数在处理字符串是都是以'\0'作为结尾标记, 因此输入产生必须包含'\0'
        -  strcpy 和strcat必须保证目标字符数组的剩余空间足以保存整个源字符串加上'\0'
    -  受限的字符串函数  strncpy, strncat, strncmp
        -  即这些函数, 在处理字符串时,会根据我们指定的位置来处理(不会依赖'\0'), 即只要你不糊涂, 他们是安全的
        -  strncpy只赋值len个字符串到目标字符串中,
            -  当源字符串长度小于len时, 剩余空间以'\0'填充, 大于时,那就填满了, 就没有'\0', 那就是你的问题喽
        -  strncat 与strncmp的处理与strncpy类似, 即他们会根据你提供的'n'来处理!!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值