str 系列字符串操作函数

发布时间 2024-01-10 12:20:49作者: 屿川

str 系列字符串操作函数主要包括 strlen、strcpy、strcmp、strcat 等。strlen 函数用于统计字符串长度,strcpy 函数用于将某个字符串复制到字符数组中,strcmp 函数用于比较两个字符串的大小,strcat 函数用于将两个字符串连接到一起。各个函数的具体格式如下所示

1 #include <string.h>
2 size_t strlen(char *str);
3 char *strcpy(char *to, const char *from);
4 int strcmp(const char *str1, const char *str2);
5 char *strcat(char *str1, const char *str2);

对于传参类型 char*,直接放入字符数组的数组名即可。

例子:str系列字符串操作函数的使用

 1 #include <stdio.h>
 2 #include <string.h>
 3 int mystrlen(char c[]) {
 4 int i = 0;
 5 while (c[i++]);
 6 return i - 1;}
 7 //strlen 统计字符串长度
 8 int main() {
 9 int len; //用于存储字符串长度
10 char c[20];
11 char d[100] = "world";
12 gets(c);
13 puts(c);
14 len = strlen(c);
15 printf("len=%d\n", len);
16 len = mystrlen(c);
17 printf("mystrlen len=%d\n", len);
18 strcat(c, d);
19 strcpy(d, c); //c 中的字符串复制给 d
20 puts(d);
21 printf("c?d %d\n", strcmp(c, d));
22 puts(c);
23 return 0;
24 }
25 
26 //执行后的结果
27 hello
28 hello
29 len=5
30 mystrlen len=5
31 helloworld
32 c?d 0
33 helloworld

输入"hello"后的执行结果,通过 strlen 函数计算的字符串长度为5,我们自己写的函数就是 strlen 函数的计算原理,即通过判断结束符来确定字符串的长度。

strcpy 函数用来将字符串中的字符逐个地赋值给目标字符数组。例中我们将c 复制给d,就是将 c 中的每个字符依次赋值给 d,也会将结束符赋值给 d。注意,目标数组一定要大于字符串大小,即 sizeof(d)>strlen(c),否则会造成访问越界。

strcmp 函数用来比较两个字符串的大小,由于字符数组 c 中的字符串与d 相等,所以这里的返回值为 0。如果 c 中的字符串大于 d,那么返回值为 1;如果 c 中的字符串小于d,那么返回值为−1。如何比较两个字符串的大小呢?具体操作是从头开始,比较相同位置字符的ASCII 码值,若发现不相等则直接返回,否则接着往后比较。例如,strcmp("hello","how")的返回值是−1,即"hello"小于"how",因为第一个字符 h 相等,接着比较第二个位置的字符,e 的ASCII 码值小于 o 的,然后返回−1。

strcat 函数用来将一个字符串接到另外一个字符串的末尾。例中字符数组c 中存储的是"hello",我们将 d 中的"world"与 c 拼接,最终结果为"helloworld"。注意,目标数组必须大于拼接后的字符串大小,即 sizeof(c)>strlen(“helloworld”)。