一、标C中字符串操作相关函数
1、字符串常用基本函数
(1)strlen(3)
#include <string.h>
size_t strlen(const char *s);
功能:
主要用于计算指定字符串的长度,单位:字节。
(2)strcpy(3) / strncpy(3)
#include <string.h>
char *strcpy(char *dest, const char *src);
char *strncpy(char *dest, const char *src, size_t n);
功能:
主要用于将要复制的字符串src复制到指定的字符串dest,其中strncpy()能够指定要复制的位数。
返回值:
success —- 指向字符串dest的指针;
(3)strcmp(3) / strncmp(3)
#include <string.h>
int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, size_t n);
功能:
主要用于比较两个字符串的大小;
参数:
第一个参数:存放第一个字符串的地址;
第二个参数:存放第二个字符串的地址;
第三个参数:指定两个字符串比较的位数;
返回值:
若s1<s2,则返回值小于0;若s1=s2,则返回值等于0;若s1>s2,则返回值大于0;
(4)strcat(3) / strncat(3)
#include <string.h>
char *strcat(char *dest, const char *src);
char *strncat(char *dest, const char *src, size_t n);
功能:
主要用于将字符串src拼接到字符串dest的末尾并保存于dest中;
参数:
第一个参数:存放第一个字符串的地址;
第二个参数:存放第二个字符串的地址;
第三个参数:选取字符串src中指定位数用于拼接;
返回值:
success —- 指向拼接成功的字符串地址的指针;
2、字符串的其它相关函数
(1)strcasecmp(3) / strncasecmp(3) - - - - 比较字符串
#include <strings.h>
int strcasecmp(const char *s1, const char *s2);
int strncasecmp(const char *s1, const char *s2, size_t n);
功能:
用途与strcmp()类似,只是strcasecmp()不区分字符串字母的大小写;
返回值:
若s1<s2,则返回值小于0;若s1=s2,则返回值等于0;若s1>s2,则返回值大于0;具体返回的数值大小等于两个字符串首个不等字符ASCII码值的差;如:s1="A";s2="0",返回'a'-'0'=97-48=49
注意:
经测试,strcasecmp()中将所有的大写字母都作为小写字母处理;
(2)strchr(3) / strrchr(3) - - - - 查找字符
#include <string.h>
char *strchr(const char *s, int c);
char *strrchr(const char *s, int c);
功能:
在给定的字符串中查找指定的字符,其中strchr()返回该字符第一次出现的位置的地址,而strrchr()返回该字符最后出现的位置的地址,若找不到该字符均返回NULL;
参数:
第一个参数:给定的字符串地址;
第二个参数:待查找字符的ASCII码,如:'a'
或97
都可以;
(3)strstr(3) / strcasestr(3) - - - - 查找字符串
#include <string.h>
char *strstr(const char *haystack, const char *needle);
char *strcasestr(const char *haystack, const char *needle);
功能:
主要用于在指定的字符串中查找子字符串,如"hello world!"
中查找"world"
;strcasestr()
的区别是能忽略字母的大小写差异。
返回值:
success —- 子字符串的首地址,error —- NULL;
(4)atoi(3) / atol(3) / atoll(3) - - - - 转化类型
#include <stdlib.h>
int atoi(const char *nptr);
long atol(const char *nptr);
long long atoll(const char *nptr);
功能:
主要用于将以数字开头的字符串的起始数据部分转换为int
或long
或long long
类型;
#include <stdlib.h>
double strtod(const char *nptr, char **endptr);
float strtof(const char *nptr, char **endptr);
long double strtold(const char *nptr, char **endptr);
3、检查字符的内容
(1)isalnum(3)
#include <ctype.h>
int isalnum(int c);
功能:
主要用于判断指定字符是否是数字或字母,若是则返回非0,若不是则返回0;等同于isalpha(c) || isdigit(c)
。
(2)isalpha(3) / isdigit(3)
#include <ctype.h>
int isalpha(int c);
功能:
主要用于判断指定字符是否是字母,若是则返回非0,若不是则返回0;等同于isupper(c) || islower(c)
。
#include <ctype.h>
int isdigit(int c);
功能:
主要用于判断指定字符是否是数字,若是则返回非0,若不是则返回0;
(3)isupper(3) / islower(3)
#include <ctype.h>
int isupper(int c);
功能:
主要用于判断指定字符是否是大写字母,若是则返回非0,若不是则返回0;
#include <ctype.h>
int islower(int c);
功能:
主要用于判断指定字符是否是小写字母,若是则返回非0,若不是则返回0;
4、其他字符检查函数
int iscntrl(int c);//检查是否为控制字符
int isgraph(int c);//检查是否是图形字符,等效于 isalnum() || ispunct()
int isprint(int c);//检查是否是可打印字符
int ispunct(int c);//检查是否为标点符号
int isspace(int c);//检查是否为空格类型字符
int isxdigit(int c);//检查是否为十六进制数字表示的有效字符
int isascii(int c);//检查是否为ASCII字符集中的字符
int isblank(int c);//检查是否为空格或tab字符