1字符处理库函数
头文件 |
#include <ctype.h> |
函数 |
功能 |
int isalnum(int c) |
判断字符常量是否为字母或数字,如isalnum(‘a’)或isalnum(‘1’) |
isdigit |
是否为数字 |
isalpha |
是否为字母 |
islower |
是否小写 |
isupper |
是否大写 |
tolower |
将大写字母转为小写字母 |
toupper |
将小写字母转为大写字母 |
字符常量与整型常量的区别:
‘1’表示字符常量,而1表示整型常量,1 = ‘1’– ‘0’ /*将字符’1’转为整型1*/
char c = ‘1’; /*将字符’1’赋值给字符变量c*/
char c = 1; /*将ASCII码值为1的字符赋值给字符变量c*/
int c = ‘1’; /*将字符’1’的ASCII码值赋值给整型变量c*/
int c = 1; /*将整型1的值赋值给整型变量c*/
int myisalnum(int c) { return (((c >= '0') && (c <= '9')) || ((c >= 'a') && (c <= 'z')) || ((c >='A') && (c <= 'Z'))); }
2字符串转换函数
头文件 |
#include <stdlib.h> |
函数 |
功能 |
int atoi(const char *nptr); |
将字符串转换成整型数 |
long atol(const char *nptr); |
将字符串转换成长整型数 |
double atof(const char *nptr); |
将字符串转换成浮点数 |
int my_atoi(const char *nptr) { int num = 0; int is_neg = 0; /*输入错误处理*/ if (nptr == NULL) { return -1; } while (*nptr != '\0') { /*字符串前面的空字符的处理*/ if (isspace(*nptr) && num == 0) { ;/*do nothing*/ } /*字符串前面负号的处理*/ else if (*nptr == '-' && num == 0) { is_neg = 1; } /*字符串前面正号的处理*/ else if (*nptr == '+' && num == 0) { is_neg = 0; } /*数值计算*/ else if (*nptr >= '0' && *nptr <= '9') { num = num * 10 + *nptr - '0'; } /*字符串中含有其他字符的一律返错*/ else { return -1; } ++nptr; } if (is_neg) { return (0 - num); } else { return num; } }
3字符串处理函数
头文件 |
#include <string.h> |
函数 |
功能 |
char *strcpy(char *s1, const char *s2); |
将字符串s2复制到s1中。 |
char *strncpy(char *s1, const char *s2, size_t n); |
将字符串s2复制至少n个字节到s1中。 |
char *strcat(char *s1, const char *s2); |
将s2添加到s1的尾部。 |
char *strncat(char *s1, const char *s2, size_t n); |
将s2添加至少n个字节到s1的尾部。 |
int strcmp(const char *s1, const char *s2); |
比较字符串s1与s2的大小 |
int strncmp(const char *s1, const char *s2, size_t n) |
对s1与s2中最多n个字符进行比较 |
char *strchr(const char *s, int c); |
字符在s中第一次出现的位置 |
char *strstr(const char *s1, const char *s2); |
s2在s1中第一次出现的位置 |
size_t strlen(const char *s); |
计算s的长度(不包括终止的空字符) |
char *strcpy (char *dst, char *src) { char *cp = dst; while (*cp++ = *src++) ; /* Copy src over dst */ return dst; } char *strcat(char *dst, char *src) { char *cp = dst; while (*cp) ++cp; /* Find end of dst */ while( *cp++ = *src++ ) ; /* Copy src to end of dst */ return dst; } int strlen(const char *str) { int length = 0; while(*str++) ++length; return length; } int strcmp(unsigned char *src, unsigned char *dst) { int ret = 0 ; for(; *src == *dst; ++src, ++dst) if (*s1 == '\0') return 0; return (*(unsigned char *)src < *(unsigned char *)dst) ? -1 : 1; }