课程章节:
- 课程名称:物联网/嵌入式工程师
- 章节名称:第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;
}
执行结果:
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;
}
执行结果:
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;
}
执行结果:
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;
}
执行结果:
学习笔记:
课后任务
练习
char buf[] = "I Love China";
(1)设计一个count_uppercase_character()函数,自己定义参数和返回值,要求
统计上述数组中大写字符的个数。
(2)调用自己设计的函数,并输出。
代码
执行结果:
课程评价:
通过学习字符串相关操作函数,能够熟练掌握程序中的字符串操作。