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;
}

7581

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



