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;
}

运行结果:

再学C语言49:C库中的字符串函数-LMLPHP

二、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;
}

运行结果:

再学C语言49:C库中的字符串函数-LMLPHP

三、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;
}

运行结果:

再学C语言49:C库中的字符串函数-LMLPHP

注意:每运行一次strcat()函数或strncat()函数,第一个参数数组内的内容会被改变

 

04-06 19:27
查看更多