C-029.字符串常用的函数

#include <string.h>     使用字符串函数 需要先导入该文件头

1.用来计算字符串长度的函数,不包含\0
size_t strlen(const char *str);

2.1字符串拷贝函数
把src中内容拷贝到dest中,它会覆盖原来的内容,它会把src中的\0,没有覆盖内容不变
如果scr中的长度超过了dest所能容纳的长度就可能导致程序崩溃
strcpy(char * dest, const char * src);

2.2

len:表示要拷贝的字符串长度,不包含\0
strncpy(char * dest, const char *src, size_t len)

3.字符串拼接函数
把src中内容拼接在dest原有字符串后面,从前往后找,找到第一个\0位置开始进行拼接
如果scr中的长度超过了dest所能容纳的长度就可能导致程序崩溃

strcat(char * dest, const char * src)

4.字符串比较
str1 与 str2 中从第一个字符开始进行比较,若相等就找后面的字符是否相等,如果都相同就返回0,如果遇到不相等字符就返回这个两个字符的ASCII值的差
strcmp(const char *str1, const char * str2);

void test(){
    //用来计算字符串长度的函数,不包含\0
    //size_t strlen(const char *str);
    char str1[] = "today is";
    size_t length = strlen(str1);
    printf("%ld\n",sizeof(str1));//打印 9 包含\0
    printf("%lu\n",length);//打印 8  不包含\0

}
void test2(){
    /*
     字符串拷贝函数
     把src中内容拷贝到dest中,它会覆盖原来的内容,它会把src中的\0一起拷贝过去,没有覆盖的内容不变
     如果scr中的长度超过了dest所能容纳的长度就可能导致程序崩溃
     strcpy(char * dest, const char * src);
     */
    char str1[10] = "today is ";
    char str2[] = "good";
    
    strcpy(str1, str2);
    printf("%s\n",str1);//打印good
    for (int i = 0; i < 10 ; i++) {
        printf("%c",str1[i]);//打印good is 证明把str2的\0拷贝过去,%s到\0就结束了
    }

}

void test3(){
    //  len:表示要拷贝的字符串长度,不包含\0
    //  strncpy(char * dest, const char *src, size_t len)
    char str1[10] = "today is ";
    char str2[] = "good";
    strncpy(str1, str2, strlen(str2));
    printf("%s\n",str1);//打印 goody is 拷贝过去不包含\0
}

void test4(){
    /*
     字符串拼接函数
     把src中内容拼接在dest原有字符串后面,从前往后找,找到第一个\0位置开始进行拼接
     如果scr中的长度超过了dest所能容纳的长度就可能导致程序崩溃
     strcat(char * dest, const char * src)
     */
    //    char str1[10] = "today is ";
    //    char str2[] = "good";
    //    strcat(str1, str2);  超过容纳长度,程序会崩溃
    //    printf("%s\n",str1);
    char str1[20] = "today is ";
    char str2[] = "good";
    strcat(str1, str2);
    printf("%s\n",str1);//打印today is good

}

int main(int argc, const char * argv[]) {
/*
    字符串比较:
    str1 与 str2 中从第一个字符开始进行比较,若相等就找后面的字符是否相等,如果都相同就返回0,如果遇到不相等字符就返回这个两个字符的ASCII值的差
    strcmp(const char *str1, const char * str2);
*/
    char str1[] = "abc";
    char str2[] = "abc";
    char str3[] = "abr";
    int rs = strcmp(str1, str2);
    printf("%d\n",rs);//打印0
    rs = strcmp(str1, str3);
    printf("%d\n",rs);//打印-15
  
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值