字符处理函数
C语言提供了一系列标准库函数用于处理字符,这些函数通常定义在<ctype.h>头文件中:
isalpha(int c):检查字符是否为字母(A-Z或a-z)。isdigit(int c):检查字符是否为数字(0-9)。isalnum(int c):检查字符是否为字母或数字。islower(int c):检查字符是否为小写字母。isupper(int c):检查字符是否为大写字母。tolower(int c):将大写字母转换为小写。toupper(int c):将小写字母转换为大写。
示例代码:
#include <ctype.h>
char ch = 'A';
if (isalpha(ch)) {
ch = tolower(ch); // 转换为小写
}
字符串处理函数
字符串函数主要定义在<string.h>头文件中:
strlen(const char *str):返回字符串长度(不包括终止符'\0')。strcpy(char *dest, const char *src):复制字符串。strncpy(char *dest, const char *src, size_t n):安全复制,限制长度。strcat(char *dest, const char *src):连接字符串。strncat(char *dest, const char *src, size_t n):安全连接,限制长度。strcmp(const char *str1, const char *str2):比较字符串。strncmp(const char *str1, const char *str2, size_t n):安全比较,限制长度。
示例代码:
#include <string.h>
char src[] = "Hello";
char dest[20];
strcpy(dest, src); // 复制字符串
strcat(dest, " World"); // 连接字符串
字符串搜索和分割函数
strchr(const char *str, int c):查找字符首次出现的位置。strrchr(const char *str, int c):查找字符最后一次出现的位置。strstr(const char *haystack, const char *needle):查找子字符串。strtok(char *str, const char *delim):分割字符串。
示例代码:
char str[] = "apple,banana,cherry";
char *token = strtok(str, ","); // 分割字符串
while (token != NULL) {
printf("%s\n", token);
token = strtok(NULL, ",");
}
内存操作函数
这些函数定义在<string.h>中,但常用于处理字符数组:
memset(void *ptr, int value, size_t num):设置内存块的值。memcpy(void *dest, const void *src, size_t num):复制内存块。memmove(void *dest, const void *src, size_t num):安全复制内存块(处理重叠区域)。
示例代码:
char buffer[50];
memset(buffer, 0, sizeof(buffer)); // 清零缓冲区
格式化字符串函数
sprintf(char *str, const char *format, ...):格式化输出到字符串。snprintf(char *str, size_t size, const char *format, ...):安全格式化输出。
示例代码:
char result[100];
int num = 42;
sprintf(result, "The answer is %d", num);
注意事项
使用字符串函数时需要注意缓冲区溢出问题,优先选择带有长度限制的安全版本(如strncpy替代strcpy)。所有字符串操作函数都假设字符串以'\0'结尾,未正确终止的字符串可能导致未定义行为。
1万+

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



