### C语言中的String函数用法详解
在C语言中,字符串(String)并不是一种基本数据类型,而是由字符数组(Character Array)来表示的,这意味着字符串的处理往往依赖于对字符数组的操作,尽管C标准库提供了一系列用于处理字符串的函数,但需要注意的是,这些函数并不直接修改字符串本身(除了特定的几个函数,如`strcpy`、`strcat`等),而是返回处理后的结果或执行某种操作,我们将详细介绍几个常用的C语言字符串处理函数及其用法。
#### 1. `strlen()` - 计算字符串长度
`strlen()`函数用于计算给定字符串的长度,不包括终止的空字符(`\0`),其原型定义在`string.h`头文件中。
```c
#include
#include
int main() {
char str[] = "Hello, World!";
printf("The length of '%s' is %lu.\n", str, strlen(str));
return 0;
}
注意:`strlen()`的返回值是`size_t`类型,在大多数平台上,`size_t`是`unsigned long`的别名。 #### 2. `strcpy()` - 字符串复制 `strcpy()`函数用于将源字符串(包括终止的空字符)复制到目标字符串中。使用此函数时需要确保目标字符串有足够的空间来存储源字符串。 ```c #include <stdio.h> #include <string.h> int main() { char src[] = "Hello, World!"; char dest[50]; strcpy(dest, src); printf("Copied string: %s\n", dest); return 0; }
**注意**:`strcpy()`不会检查目标缓冲区的大小,可能导致缓冲区溢出,因此使用时需要格外小心。
#### 3. `strcat()` - 字符串连接
`strcat()`函数用于将源字符串连接到目标字符串的末尾,包括源字符串的终止空字符,使用前需要确保目标字符串有足够的空间来存储两个字符串连接后的结果。
char dest[50] = "Hello, ";
char src[] = "World!";
strcat(dest, src);
printf("Concatenated string: %s\n", dest);
#### 4. `strcmp()` - 字符串比较 `strcmp()`函数用于比较两个字符串。如果字符串1和字符串2相等,则返回0;如果字符串1在字典序上小于字符串2,则返回负值;如果字符串1在字典序上大于字符串2,则返回正值。 ```c #include <stdio.h> #include <string.h> int main() { char str1[] = "apple"; char str2[] = "banana"; char str3[] = "apple"; printf("Comparing '%s' and '%s': %d\n", str1, str2, strcmp(str1, str2)); printf("Comparing '%s' and '%s': %d\n", str1, str3, strcmp(str1, str3)); return 0; }
#### 5. `strchr()` - 查找字符
`strchr()`函数用于在字符串中查找第一次出现的指定字符,并返回指向该字符的指针,如果未找到该字符,则返回NULL。
char ch = 'W';
char *ptr;
ptr = strchr(str, ch);
if (ptr != NULL)
printf("Character '%c' found at position: %ld\n", ch, ptr - str);
else
printf("Character '%c' not found in string\n", ch);
```
#### 6. `strstr()` - 查找子串
`strstr()`函数用于在字符串中查找第一次出现的指定子串,并返回指向该子串的指针,如果未找到子串,则返回NULL。
char substr[] = "World";
ptr = strstr(str, substr);
if (ptr != NULL