在C语言中,字符串操作函数主要用于处理和操作字符串,这些函数大多定义在`<string.h>`头文件中。以下是C语言中常用的字符串操作函数及其详细说明和示例:
### 1. `strcpy` 函数
**功能**:将一个字符串复制到另一个字符串中,包括终止的空字符'\0'。
**原型**:`char*strcpy(char *dest, const char*src);`
**参数**:
- `dest`:目标字符串。
- `src`:源字符串。
**返回值**:指向目标字符串的指针。
**示例**:
```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;
}
```
### 2. `strcat` 函数
**功能**:将一个字符串连接到另一个字符串的末尾,同样包括终止的空字符'\0'。
**原型**:`char*strcat(char *dest, const char*src);`
**参数**:
- `dest`:目标字符串。
- `src`:源字符串。
**返回值**:指向目标字符串的指针。
**示例**:
```c
#include <stdio.h>
#include <string.h>
int main() {
char dest[50] = "Hello, ";
char src[] = "World!";
strcat(dest, src);
printf("Concatenated string: %s\n", dest);
return 0;
}
```
### 3. `strlen` 函数
**功能**:计算字符串的长度,不包括终止的空字符。
**原型**:`size_t strlen(const char*str);`
**参数**:
- `str`:要计算长度的字符串。
**返回值**:字符串的长度。
**示例**:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
size_t length = strlen(str);
printf("Length of string: %zu\n", length);
return 0;
}
```
### 4. `strcmp` 函数
**功能**:比较两个字符串,逐个字符比较直到遇到第一个不同字符或字符串结束符'\0',并区分大小写。
**原型**:`int strcmp(const char*str1, const char *str2);`
**参数**:
- `str1`:第一个字符串。
- `str2`:第二个字符串。
**返回值**:
- 如果`str1`小于`str2`,返回负数。
- 如果`str1`等于`str2`,返回0。
- 如果`str1`大于`str2`,返回正数。
**示例**:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello";
char str2[] = "World";
int result = strcmp(str1, str2);
if (result < 0) {
printf("str1 is less than str2\n");
} else if (result > 0) {
printf("str1 is greater than str2\n");
} else {
printf("str1 is equal to str2\n");
}
return 0;
}
```
### 5. `strchr` 函数
**功能**:搜索字符在字符串中的首次出现位置。
**原型**:`char*strchr(const char *str, int c);`
**参数**:
- `str`:要搜索的字符串。
- `c`:要查找的字符。
**返回值**:指向字符首次出现位置的指针,如果未找到则返回NULL。
**示例**:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
char *ptr = strchr(str, 'W');
if (ptr != NULL) {
printf("Character 'W' found at position: %ld\n", ptr - str);
} else {
printf("Character 'W' not found\n");
}
return 0;
}
```
### 6. `strstr` 函数
**功能**:搜索子字符串在字符串中的首次出现位置。
**原型**:`char*strstr(const char *haystack, const char*needle);`
**参数**:
- `haystack`:要搜索的字符串。
- `needle`:要查找的子字符串。
**返回值**:指向子字符串首次出现位置的指针,如果未找到则返回NULL。
**示例**:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
char *ptr = strstr(str, "World");
if (ptr != NULL) {
printf("Substring 'World' found at position: %ld\n", ptr - str);
} else {
printf("Substring 'World' not found\n");
}
return 0;
}
```
### 7. `strncpy` 函数
**功能**:将指定长度的字符串复制到目标字符串中,剩余部分用空字符填充。
**原型**:`char*strncpy(char *dest, const char*src, size_t n);`
**参数**:
- `dest`:目标字符串。
- `src`:源字符串。
- `n`:要复制的最大字符数。
**返回值**:指向目标字符串的指针。
**示例**:
```c
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, World!";
char dest[50];
strncpy(dest, src, 5);
dest[5] = '\0'; // 确保字符串以'\0'结尾
printf("Copied string: %s\n", dest);
return 0;
}
```
### 8. `strncat` 函数
**功能**:将指定长度的字符串连接到目标字符串的末尾。
**原型**:`char*strncat(char *dest, const char*src, size_t n);`
**参数**:
- `dest`:目标字符串。
- `src`:源字符串。
- `n`:要连接的最大字符数。
**返回值**:指向目标字符串的指针。
**示例**:
```c
#include <stdio.h>
#include <string.h>
int main() {
char dest[50] = "Hello, ";
char src[] = "World!";
strncat(dest, src, 5);
printf("Concatenated string: %s\n", dest);
return 0;
}
```
### 9. `strncmp` 函数
**功能**:比较两个字符串的前n个字符。
**原型**:`int strncmp(const char*str1, const char *str2, size_t n);`
**参数**:
- `str1`:第一个字符串。
- `str2`:第二个字符串。
- `n`:要比较的最大字符数。
**返回值**:
- 如果前n个字符相同,返回0。
- 如果前n个字符不同,返回非零值。
**示例**:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello";
char str2[] = "Hella";
int result = strncmp(str1, str2, 3);
if (result == 0) {
printf("First 3 characters are equal\n");
} else {
printf("First 3 characters are not equal\n");
}
return 0;
}
```
### 10. `strtok` 函数
**功能**:将字符串根据分隔符分割成一系列标记。
**原型**:`char*strtok(char *str, const char*delim);`
**参数**:
- `str`:要分割的字符串。
- `delim`:分隔符字符串。
**返回值**:指向下一个标记的指针,如果没有更多标记则返回NULL。
**示例**:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello,World!This,is,a,test";
const char delim[] = ",";
char *token = strtok(str, delim);
while (token != NULL) {
printf("Token: %s\n", token);
token = strtok(NULL, delim);
}
return 0;
}
```
### 11. `strerror` 函数
**功能**:将错误编号转换为对应的错误消息字符串,用于调试和错误处理。
**原型**:`char*strerror(int errnum);`
**参数**:
- `errnum`:错误编号。
**返回值**:指向错误消息字符串的指针。
**示例**:
```c
#include <stdio.h>
#include <errno.h>
#include <string.h>
int main() {
FILE *file = fopen("nonexistentfile.txt", "r");
if (file == NULL) {
printf("Error opening file: %s\n", strerror(errno));
}
return 0;
}
```

1900

被折叠的 条评论
为什么被折叠?



