C库提供了很多处理字符串的函数;ANSI C用头文件 string.h 给出这些函数的原型
一、strlen()函数
功能:计算并返回字符串长度
示例代码:
/* test strlen() function */
#include <stdio.h>
#include <string.h>
int main(void)
{
char arr[] = "good morning!";
int cnt;
cnt = strlen(arr);
printf("length of \"%s\" is %d\n", arr, cnt);
return 0;
}
运行结果:
二、strcat()函数
功能:接受两个字符串参数,将第二个字符串的一份拷贝添加到第一个字符串的结尾,使第一个字符串成为一个新的组合字符串,不改变第二个字符串
strcat()函数时char *(指向char的指针)类型,函数返回其第一个参数的值,即其后添加了第二个字符串的那个字符串中的第一个字符的地址
示例代码:
/* test of strcat() function */
#include <stdio.h>
#include <string.h>
int main(void)
{
char arr1[100] = "good morning,"; // arr1的空间必须足够容纳添加了arr2之后的字符串长度
// 否则数据会溢出
char arr2[] = "good afternoon, and good night!";
printf("%s\n", arr1);
strcat(arr1, arr2);
printf("%s\n", arr1);
return 0;
}
运行结果:
三、strncat()函数
与strcat()函数功能类似,区别:
1)strcat()函数并不检查第一个数组是否能够容纳第二个字符串;如果没有给第一个数组分配足够的空间,多出来的字符会溢出到相邻的存储单元;需要将空字符考虑在内
2)strncat()函数比strcat()函数多一个参数,用于指明最多允许添加的字符的数目;需要将空字符考虑在内;到参数上限或遇到空字符(以二者中先符合的那个为准)则终止添加过程
示例代码:
/* test of strncat() function */
#include <stdio.h>
#include <string.h>
int main(void)
{
char arr1[100] = "get busy living ";
char arr2[] = "or get busy dying.";
strncat(arr1, arr2, 2); // 第一次运行strncat()函数
printf("%s\n", arr1); // 打印
strncat(arr1, arr2, 20); // 第二次运行strncat()函数时,arr的内容已经改变了
printf("%s\n", arr1); // 打印
return 0;
}
运行结果:
注意:每运行一次strcat()函数或strncat()函数,第一个参数数组内的内容会被改变