包含头文件
:
#include <string.h>
字符串拷贝函数
strcpy 函数
函数原型
:
char *strcpy(char *dest, const char *src)
描述
:
把 src
所指向的字符串复制到
dest
。
返回值
:
该函数返回一个指向最终的目标字符串 dest
的指针。
备注
:
如果目标数组 dest
不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况
strncpy 函数
函数原型
:
char *strncpy(char *dest, const char *src, size_t n)
描述
:
把 src
所指向的字符串复制到
dest
,最多复制
n
个字符。
返回值
:
该函数返回最终复制的字符串。
备注
:
当 src
的长度小于
n
时,
dest
的剩余部分将用空字节填充
strdup 函数
函数原型
:
char * strdup(const char *s);
描述
:
strdup()会先用
maolloc()
配置与参数
s
字符串相同的空间大小,然后将参数
s
字符串的内容复制到该内存地址,然后把该地址返回。该地址最后可以利用 free()
来释放。
返回值
:
返回一字符串指针,该指针指向复制后的新字符串地址。若返回 NULL
表示内存不足
备注
:
使用完一定要 free()
释放内存
字符串比较函数
strcmp 函数
函数原型
:
int strcmp(const char *str1, const char *str2)
描述
:
把 str1
所指向的字符串和
str2
所指向的字符串进行比较。
返回值
:
如果返回值小于 0
,则表示
str1
小于
str2
。
如果返回值大于 0
,则表示
str1
大于
str2
如果返回值大于 0
,则表示
str1
大于
str2
备注
:
无
strncmp 函数
函数原型
:
int strncmp(const char *str1, const char *str2, size_t n)
描述
:
把 str1
和
str2
进行比较,最多比较前
n
个字节。
返回值
:
如果返回值小于 0
,则表示
str1
小于
str2
。
如果返回值大于 0
,则表示
str1
大于
str2
如果返回值大于 0
,则表示
str1
大于
str2
备注
:
无
字符串连接函数
strcat 函数
函数原型
:
char *strcat(char *dest, const char *src)
描述
:
把 src
所指向的字符串追加到
dest
所指向的字符串的结尾。
返回值
:
该函数返回一个指向最终的目标字符串 dest
的指针。
备注
:
无
strncat 函数
函数原型
:
char *strncat(char *dest, const char *src, size_t n)
描述
:
把 src
所指向的字符串前
n
个字符追加到
dest
所指向的字符串的结尾。
返回值
:
该函数返回一个指向最终的目标字符串 dest
的指针。
备注
:
无
计算字符串长度函数
函数原型
:
size_t strlen(const char *str)
描述
:
计算字符串 str
的长度,直到空结束字符,但不包括空结束字符。
返回值
:
该函数返回字符串的长度。
备注
:
无
字符串检索函数
strchr 函数
函数原型
:
char *strchr(const char *str, int c)
描述
:
在参数 str
所指向的字符串中搜索第一次出现字符
c
(一个无符号字符)的位置。
返回值
:
该函数返回在字符串 str
中第一次出现字符
c
的地址,如果未找到该字符则返回
NULL
备注
:
无
strcspn 函数
函数原型
:
size_t strcspn(const char *str1, const char *str2)
描述
:
检索字符串 str1
开头连续有几个字符都不含字符串
str2
中的字符。
返回值
:
该函数返回 str1
开头连续都不含字符串
str2
中字符的字符数
备注
:
无
strerror 函数
函数原型
:
char *strerror(int errnum)
描述
:
从内部数组中搜索错误号 errnum
,并返回一个指向错误消息字符串的指针。
返回值
:
该函数返回一个指向错误字符串的指针,该错误字符串描述了错误 errnum
。
备注
:
strerror 生成的错误字符串取决于开发平台和编译器。
示例
:
int main ()
{
FILE *fp;
fp = fopen("file.txt","r");
if( fp == NULL )
{
printf("Error: %s\n", strerror(errno));
}
return(0);
}
strrchr 函数
函数原型
:
char *strrchr(const char *str, int c)
描述
:
在参数 str
所指向的字符串中搜索最后一次出现字符
c
(一个无符号字符)的位置。
返回值
:
该函数返回 str
中最后一次出现字符
c
的地址。如果未找到该值,则函数返回一个空指针。
备注
:
无
strspn 函数
函数原型
:
size_t strspn(const char *str1, const char *str2)
描述
:
检索字符串 str1
中第一个不在字符串
str2
中出现的字符下标。
返回值
:
该函数返回 str1
中第一个不在字符串
str2
中出现的字符下标。
备注
:
无
strstr 函数
函数原型
:
char *strstr(const char *haystack, const char *needle)
描述
:
在字符串 haystack
中查找第一次出现字符串
needle
(不包含空结束字符)的地址。
返回值
:
该函数返回在 haystack
中第一次出现
needle
字符串的地址,如果未找到则返回
null
。
备注
:
无
strtok 函数
函数原型
:
char *strtok(char *str, const char *delim)
描述
:
strtok()用来将字符串分割成一个个片段。参数
str
指向欲分割的字符串,参数
delim
则为分割字符串,当 strtok()
在参数
str
的字符串中发现到参数
delim
的分割字符时则会将该字符改为\0
字符。在第一次调用时,
strtok()
必需给予参数
str
字符串,往后的调用则将参数
str
设置成 NULL
。每次调用成功则返回下一个分割后的字符串指针。
返回值
:
返回下一个分割后的字符串指针,如果已无从分割则返回 NULL.
备注
:
无
示例:
int main ()
{
char str[80] = "This is-www.runoob.com-website";
const char s[2] = "-";
char *token;
/* 获取第一个子字符串 */
token = strtok(str, s);
/* 继续获取其他的子字符串 */
while( token != NULL ) {
printf( "%s\n", token );
token = strtok(NULL, s);
}
for (int i = 0; i < 34;i++)
printf("%c", str[i]);
printf("\n");
return(0);
}
打印结果:
strspn 函数
函数原型
:
size_t strspn(const char *str, const char * accept);
描述
:
strspn() 从参数
str
字符串的开头计算连续的字符,而这些字符都完全是
accept
所指字符串中的字符。简单的说,若 strspn()
返回的数值为
n
,则代表字符串
str
开头连续有
n
个字符都是属于字符串 accept
内的字符。
返回值
:
返回字符串 str
开头连续包含字符串
accept
内的字符数目。所以,如果
str
所包含的字符都属于 accept
,那么返回
str
的长度;如果
str
的第一个字符不属于
accept
,那么返回0。
备注
:
检索的字符是区分大小写的。函数 strcspn()
的含义与
strspn()
相反,可以对比学习。
strsep 函数
函数原型
:
char *strsep(char **stringp,const char *delim)
描述
:
分解字符串为一组字符串。从 stringp
指向的位置起向后扫描,遇到
delim
指向的字符串中的字符后,将此字符替换为“\0”
,返回
stringp
指向的地址。它适用于分割
“
关键字
”
在两个字符串之间只“
严格出现一次
”
的情况。
返回值
:
函数返回分割后的第一个字符串。函数执行的过程,是在 *stringp
中查找分割符,并将其替换为“\0”
,返回分割出的第一个字符串指针 (
NULL
表示到达字符串尾),并更新
*stringp指向下一个字符串
备注
:
不要把待检索的字符串的地址传递给第一个参数,应该定义一个指针去操作,如下例子:
示例
:
int main()
{
char * const delim="/;";
char str[]="some/splite;string";
char *token,*cur=str;
while(token=strsep(&cur,delim))
{
printf("%s %s %s\n",token,cur,str);
}
return 0;
}
打印输出
:
解释说明
:
可以看到 strsep
函数会去检索到
str
中出现的
delim
中的字符然后将它替换成结束符,接着 cur
会指向替换后的下一个字符位置。
字符检索函数
头文件:
#include <ctype.h>
字符串转换函数
头文件:
#include <stdlib.h>
字符串转整形 atoi
函数原型
:
int atoi(const char *str)
long atol(const char *nptr);
long long atoll(const char *nptr);
描述
:
把参数 str
所指向的字符串转换为一个整数
/
长整形
/
长长整形。
返回值
:
该函数返回转换后的整数/
长整数
/
长长整数,如果没有执行有效的转换,则返回零。
备注
:
无
字符串转浮点型 atof
函数原型
:
double atof(const char *str)
描述
:
把参数 str
所指向的字符串转换为一个浮点数(类型为
double
型)。
返回值
:
函数返回转换后的双精度浮点数,如果没有执行有效的转换,则返回零(0.0
)。
备注
:
无