目录
头文件
string.h
strlen
作用:测量字符串长度
语法:
size_t strlen(const char *s);
参数:
要测量的字符串(必须是一个以空字符结尾的字符数组或字符指针。)
返回值
长度
注意:
测量的长度不包括\0和空字符
strcpy
作用: 拷贝字符串(深拷贝)
语法:
char *strcpy(char *dest, const char *src);
参数:
dest:目标位置
src:资源位置
返回值:
就是目标位置
作用:
将src中的内容赋值到dest中
扩展
char *strncpy(char *dest,const char *src, size_t n);
参数:
dest:目标位置
src:资源位置
n:拷贝的字节数
返回值:
就是目标位置
深拷贝:
拷贝的是地址,修改原数组中的数据,拷贝后的数组中的数据也会改变
浅拷贝:
拷贝的是内容,修改原数组中的数据,不会影响到拷贝后的数组
strcat
作用: 追加
语法:
char *strcat(char *dest, const char *src);
参数:
dest:目标位置
src:资源位置
作用:将src的内容追加到dest的尾部
扩展
char *strncat(char *dest, const char *src, size_t n);
参数:
dest:目标位置
src:资源位置
n:追加的字节数
作用:将src的内容的前n个字节追加到dest的尾部
注意:
使用该函数需注意目标位置的内存大小要足够
strcmp
作用: 比较两个字符串字符串内容是否相同
语法:
int strcmp(const char *s1, const char *s2);
参数:
s1:字符串1
s2:字符串2
返回值:
0相同 非0不同
strchr
作用:查询单个字符首次出现的位置
语法:
char *strchr(const char *s,char c);
作用:
在s中查询c第一次出现的位置
参数:
s:被查找的字符串
c:要查找的字符
返回值:
c第一次出现的位置的地址
如果c不存在则返回NULL
扩展:在s中查询c最后一次出现的位置
char *strrchr(const char *s, char c);
strstr
作用:查找指定字符串出现的位置
语法:
char *strstr(const char *haystack, const char *needle);
参数:
haystack:被查找的字符串
needle:要查找的字符串
返回值:
查找到的字符串第一次出现的位置
如果不存在返回NULL
atoX
作用: 字符串转数字
语法:
int atoi(const char * p);
将字符串型的整数,转换为int
int atol(const cahr * p);
将字符串型的整数,转换为long
double atof(const char * p);
将字符串型的浮点数,转换为double
strtok
作用:切割字符串
语法:
char *strtok(char *str, const char *delim);
参数:
str:需要进行切割的字符串(前者)
delim:以那些元素切割,也是数组(后者)
返回值:
切割后的字符串注意:
每调用一次该函数,切割一次
第一次切割后,切割上一次剩余的字符串,str填NULL
以下为一个切割字符串案例
//str1是要进行切割的字符串
char * str1 = {"12345./abc.dfdf]e"};
//str2是切割元素,要以那些元素进行切割
char * str2 = {"./]"};
//创建一个指针数组用来存储切割后的字符串
char ** str = (char**)calloc(4,sizeof(char*));
//第一次切割
str[0] = strtok(str1,str2);
int x = 1;
//进入循环
while(1)
{
str[x] = strtok(NULL,str2);
//当str[i]为空时表示切割完毕,退出循环
if(str[x] == NULL)
{
break;
}
//x为指针数组的下标
x++;
}
sprintf
作用:组包
将多个数据按照指定格式组装成字符串
sprintf(str,格式,&数据1,&数据2, ...);
语法:
int sprintf(char * str,const char *format, ...);
作用:
给str指向的内存中写入指定内容,format格式化字符串,
...替换占位符的值
例:
sprintf(str,"%s省%s市%s县\n","江苏","苏州","吴江");
作用:
给字符串str中写入 江苏省苏州市吴江县\n
sscanf
作用:解包
将字符串按照指定格式提取其中的内容
sscanf(str,格式,&数据1,&数据2, ...);
语法:
int sscanf(const char *str,const char *format, ...);
作用:
从str中按format获取数据到...中
占位符:
%d:只能取整数
%2d:取两位整数,如果超过2位取两位,不足两位有几位取几位
%*d:跳过所有整数
%*2d:跳过两位整数
%c:一次读取一个字符
%2c:一次读取两个字符
%s:遇空格,换行,\0读取结束