为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 【九月打卡】第15天【养成记】嵌入式挑战第15天,C语...

【九月打卡】第15天【养成记】嵌入式挑战第15天,C语言中的函数:字符串相关操作函数

2022.09.20 23:22 35浏览

课程章节:

  • 课程名称:物联网/嵌入式工程师
  • 章节名称:第4周之第四讲 1-11 至 1-12 C语言中的函数:函数传参的数组
  • 讲师姓名:大白老师

课程内容:

C语言中的函数:字符串相关操作函数1

字符串相关API

strcpy 字符串拷贝函数

头文件 : #include <string.h>

strcpy(char dest[], char src[])  -----string copy
功能: 把src数组中'\0'之前的所有字符,连同'\0'一起拷贝到dest中去。
      要求在定义dest的时候,要足够大.
参数:
   @ dest    目标数组 
   @ src     源数组---- [数组首地址或字符串]

例如:
char buf[20] = {0};

strcpy(buf,"hello");

printf("buf = %s\n",buf);

代码示例:

#include <stdio.h>
#include <string.h>

int main()
{
    char buf[20] = {'h','e','l','l','o','\0'};
    int i = 0;

    strcpy(buf,"QQ");

    for(i = 0;i < 20;i++)
    {
        printf("%c : %d\n",buf[i],buf[i]);        
    }
    
    printf("buf = %s\n",buf); // QQ

    return 0;
}

执行结果:
104-strcpy

strcat 字符串连接函数

头文件: #include <string.h>

strcat(char dest[], char src[]);
功能:把src数组'\0'之前的字符串追加到dest字符串后,若是dest中有'\0',
     会把dest中的'\0'给覆盖掉,然后新组成的dest字符串会重新添加'\0'

参数:
        @ dest  目标数组
        @ src   源数组  [字符数组或字符串]

例如:
char buf[] = "hello";

strcat(buf," world");  //===> buf <===>"hello world"

代码示例

#include <stdio.h> 
#include <string.h>

int main()
{
    char word[20];
    char explain[20];
    char sql[50];

    //1.输出单词
    printf("please input you select word : ");
    gets(word);

    //2.输入意思
    printf("please input word explain : ");
    gets(explain);

    //3.合成一个新的数据存放到sql中
    strcpy(sql,word);        
    strcat(sql,explain);

    printf("%s\n",sql);
    return 0;
}

执行结果:
105-strcat

C语言中的函数:字符串相关操作函数2

字符串相关API

strlen 字符串长度计算函数

头文件: #include <string.h>

int strlen(const char s[]);
功能:计算s数组中第一个'\0'前字符的个数,并返回

参数:
        @   目标数组,存放字符串
返回值:返回计算的字符个数

例如:
char buf[] = "hello";

int len = strlen(buf);

pritnf("len = %d\n",len); // 5

代码示例

#include <stdio.h>
#include <string.h>  // strlen

int main()
{
    char buf[100];

    printf("please input string : ");
    scanf("%s",buf);

    //计算用户实际输入元素个数.
    printf("strlen(buf) = %d\n",strlen(buf));

    //sizeof计算数据所在内存空间的大小
    printf("sizeof(buf) = %d\n",sizeof(buf)); //100
    return 0;
}

执行结果:
106-strlen

strcmp 字符串比较函数

#include <string.h>
int strcmp(char s1[], char s2[]);
功能:  对s1和s2字符串中的每个字符逐个比较,
       若是s1中某个字符>s2中的某个字符,则返回大于0的数,
       若是s1中某个字符<s2中的某个字符,则返回小于0的数,
       若是当前s1和s2的字符相等,则比较后一个字符。若是完全相等,返回0
参数:  
 @ 待比较的数组s1   [字符串或字符数组]
 @ 待比较的数组s2    [字符串或字符数组]
返回值:
在gcc的32bit编译器下,返回如下值:
若是s1 > s2 ,返回1
若是s1 == s2, 返回0
若是s1 < s2 ,返回-1

char buf1[] = "hello";
char buf2[] = "heltt";

ret = strcmp(buf1,buf2);

代码示例

#include <stdio.h>
#include <string.h>  // strcmp

int main()
{
    char buf1[20];
    char buf2[20];
    int ret = 0;

    printf("please input string buf1 : ");
    gets(buf1);

    printf("please input string buf2 : ");
    gets(buf2);

    ret = strcmp(buf1,buf2);
    printf("ret = %d\n",ret);
    
    if(ret > 0)
    {
            printf("buf1 > buf2");        
    }else if(ret == 0){

            printf("buf1 == buf2");        
    }else if(ret < 0){
    
            printf("buf1 < buf2");        
    }
                    
    putchar('\n');
    return 0;
}

执行结果:
107-strcmp

学习笔记:

课后任务

练习

char buf[] = "I Love China";

(1)设计一个count_uppercase_character()函数,自己定义参数和返回值,要求
   统计上述数组中大写字符的个数。
(2)调用自己设计的函数,并输出。

代码


执行结果:
108-practice

课程评价:

通过学习字符串相关操作函数,能够熟练掌握程序中的字符串操作。

点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
11
获赞与收藏
0

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

50篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

145篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消