字符串
从概念上讲,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只用于字符串复制,并且包含字符串的结束符