字符串
从概念上讲,C中没有字符串数据类型
C中使用 字符数组来模拟字符串
C中字符串是以‘\0’结束的字符数组
C中字符串能够分配于栈空间、堆空间或者仅仅读存储区
C中字符串常量表示一块包含字符串中全部字符以及一个空字符('\0')的内存区域的地址
字符串长度就是字符串所包括字符的个数
C中字符串长度指的是第一个‘\0’字符前出现的字符个数
C通过‘\0’结束符来确定字符串的长度
字符串 存储
字符数组 存储字符串.储存在栈中,能够改动随意一字符
指针 存储字符串.指针存储在栈中,字符串存储在仅仅读存储区.栈中指针存储字符串首地址.不可改动随意一字符
字符串传递
1.若函数要改动此字符串,则使用字符数组存储
2.若函数仅是使用,则使用指针存储,并使用const属性
字符串 函数返回
1.形參方式返回
2.在函数中使用 static修饰要返回的字符数组指针
TIPS:千万不要返回函数局部变量栈中指针内容
3.返回字符数组存储局部变量
返回乱码
字符串 比較
比較字符串string1和string2 < 大写和小写混合亦可 >
返回时刻:遇到同位置不同字符或者'\0'
返回 1 string1返回点字符在string2后面
返回 -1 string1返回点字符在string2前面
返回 0 string1全部字符和string2同样
strcmp不会改动參数值,但依旧以‘\0’作为结束符
strncmp
限定n个字符比較 < 大写和小写混合亦可 >
返回时刻:遇到同位置不同字符、n个字符或者'\0'
谨记:安全起见,建议使用strncmp 函数
字符串 连接
strncat最多从源字符串中复制len个字符到目标串中
strncat总是在结果字符串后面加入‘\0’
strncat不会用‘\0’填充目标串中的剩余空间
谨记:安全起见,建议使用strncat 函数
字符串 复制
strncpy仅仅复制len个字符到目标字符串
当源字符串的长度小于len时,剩余的空间以‘\0’填充
当源字符串的长度大于len时,仅仅有len个字符串会被复制,且将不会以‘\0’结束
TIPS:注意点
使用strncpy复制字符串给字符数组,首先应清空字符数组,避免出现末尾乱码
strncpy仅仅用于字符串复制,而且包括字符串的结束符