strtok()—字符串分割函数
相关函数:index, memchr, rindex, strpbrk, strsep, strspn, strstr
头文件:#include <string.h>
定义函数:char * strtok(char *s, const char *delim);
函数说明:strtok()用来将字符串分割成一个个片段. 参数s 指向欲分割的字符串, 参数delim 则为分割字符串,当strtok()在参数s 的字符串中发现到参数delim 的分割字符时则会将该字符改为\0 字符. 在第一次调用时,strtok()必需给予参数s 字符串, 往后的调用则将参数s 设置成NULL. 每次调用成功则返回下一个分割后的字符串指针.
返回值:返回下一个分割后的字符串指针, 如果已无从分割则返回NULL.
范例
头文件:#include <string.h>
定义函数:char * strtok(char *s, const char *delim);
函数说明:strtok()用来将字符串分割成一个个片段. 参数s 指向欲分割的字符串, 参数delim 则为分割字符串,当strtok()在参数s 的字符串中发现到参数delim 的分割字符时则会将该字符改为\0 字符. 在第一次调用时,strtok()必需给予参数s 字符串, 往后的调用则将参数s 设置成NULL. 每次调用成功则返回下一个分割后的字符串指针.
返回值:返回下一个分割后的字符串指针, 如果已无从分割则返回NULL.
范例
#include <string.h>
main()
{
char s[] = "ab-cd : ef;gh :i-jkl;mnop;qrs-tu: vwx-y;z";
char *delim = "-: ";
char *p;
printf("%s ", strtok(s, delim));
while((p = strtok(NULL, delim)))
printf("%s ", p);
printf("\n");
}
执行结果:
ab cd ef;gh i jkl;mnop;qrs tu vwx y;z //-与:字符已经被\0 字符取代
main()
{
char s[] = "ab-cd : ef;gh :i-jkl;mnop;qrs-tu: vwx-y;z";
char *delim = "-: ";
char *p;
printf("%s ", strtok(s, delim));
while((p = strtok(NULL, delim)))
printf("%s ", p);
printf("\n");
}
执行结果:
ab cd ef;gh i jkl;mnop;qrs tu vwx y;z //-与:字符已经被\0 字符取代
strstr()—字符串查函数
相关函数:index, memchr, rindex, strchr, strpbrk, strsep, strspn, strtok
头文件:#include <string.h>
定义函数:char *strstr(const char *haystack, const char * needle);
函数说明:strstr()会从字符串haystack 中搜寻字符串needle, 并将第一次出现的地址返回.
返回值:返回指定字符串第一次出现的地址, 否则返回0.
范例
#include <string.h>
main()
{
头文件:#include <string.h>
定义函数:char *strstr(const char *haystack, const char * needle);
函数说明:strstr()会从字符串haystack 中搜寻字符串needle, 并将第一次出现的地址返回.
返回值:返回指定字符串第一次出现的地址, 否则返回0.
范例
#include <string.h>
main()
{
char * s = "012345678901234567890123456789";
char *p;
p = strstr(s, "901");
printf("%s\n", p);
}
执行结果:
9.01E+21
char *p;
p = strstr(s, "901");
printf("%s\n", p);
}
执行结果:
9.01E+21
strspn()—字符查函数
相关函数:strcspn, strchr, strpbrk, strsep, strstr
头文件:#include <string.h>
定义函数:size_t strspn(const char *s, const char * accept);
头文件:#include <string.h>
定义函数:size_t strspn(const char *s, const char * accept);
函数说明:strspn()从参数s 字符串的开头计算连续的字符, 而这些字符都完全是accept 所指字符串中的字符.简单的说, 若strspn()返回的数值为n, 则代表字符串s 开头连续有n 个字符都是属于字符串accept 内的字符.
返回值:返回字符串s 开头连续包含字符串accept 内的字符数目.
范例
#include <string.h>
main()
{
char *str = "Linux was first developed for 386/486-based PCs. ";
char *t1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("%d\n", strspn(str, t1));
}
执行结果:
5 //计算大小写字母. 不包含" ", 所以返回Linux 的长度.
5 //计算大小写字母. 不包含" ", 所以返回Linux 的长度.
strrchr()—定位字符串中最后出现的指定字符
相关函数:index, memchr, rindex, strpbrk, strsep, strspn, strstr, strtok
头文件:#include <string.h>
定义函数:char * strrchr(const char *s, int c);
函数说明:strrchr()用来出参数s 字符串中最后一个出现的参数c 地址, 然后将该字符出现的地址返回.
返回值:如果到指定的字符则返回该字符所在地址, 否则返回0.
头文件:#include <string.h>
定义函数:char * strrchr(const char *s, int c);
函数说明:strrchr()用来出参数s 字符串中最后一个出现的参数c 地址, 然后将该字符出现的地址返回.
返回值:如果到指定的字符则返回该字符所在地址, 否则返回0.
范例
#include <string.h>
main()
{
char *s = "0123456789012345678901234567890";
char *p;
p = strrchr(s, '5');
printf("%s\n", p);
}
执行结果:
567890
#include <string.h>
main()
{
char *s = "0123456789012345678901234567890";
char *p;
p = strrchr(s, '5');
printf("%s\n", p);
}
执行结果:
567890
strpbrk()—定位字符串中第一个出现的指定字符
相关函数:index, memchr, rindex, strpbrk, strsep, strspn, strstr, strtok
头文件:#include <include.h>
定义函数:char *strpbrk(const char *s, const char *accept);
函数说明:strpbrk()用来出参数s 字符串中最先出现存在参数accept 字符串中的任意字符.
返回值:如果到指定的字符则返回该字符所在地址, 否则返回0.
范例
#include <string.h>
main()
{
char *s = "0123456789012345678901234567890";
char *p; p = strpbrk(s, "a1 839"); //1 会最先在s 字符串中到
printf("%s\n", p);
p = strprk(s, "4398"); //3 会最先在s 字符串中到
printf("%s\n", p);
}
执行结果:
1.23E+29
printf("%s\n", p);
p = strprk(s, "4398"); //3 会最先在s 字符串中到
printf("%s\n", p);
}
执行结果:
1.23E+29
strncat()—字符串连接函数
相关函数:bcopy, memccpy, memecpy, strcpy, strncpy
头文件:#inclue <string.h>
定义函数:char * strncat(char *dest, const char *src, size_t n);
头文件:#inclue <string.h>
定义函数:char * strncat(char *dest, const char *src, size_t n);
函数说明:strncat()会将参数src 字符串拷贝n 个字符到参数dest 所指的字符串尾. 第一个参数dest 要有足够的空间来容纳要拷贝的字符串.
返回值:返回参数dest 的字符串起始地址.
范例
#include <string.h>
main()
{
char a[30] = "string(1)";
char b[] = "string(2)";
printf("before strncat() :%s\n", a);
printf("after strncat() :%s\n", strncat(a, b, 6));
}
执行结果:
before strncat() : string(1)
after strncat() : string(1) string
strncpy()—复制字符串
相关函数:bcopy, memccpy, memcpy, memmove
头文件:#include <string.h>
定义函数:char * strncpy(char *dest, const char *src, size_t n);
函数说明:strncpy()会将参数src 字符串拷贝前n 个字符至参数dest 所指的地址.
返回值:返回参数dest 的字符串起始地址.
头文件:#include <string.h>
定义函数:char * strncpy(char *dest, const char *src, size_t n);
函数说明:strncpy()会将参数src 字符串拷贝前n 个字符至参数dest 所指的地址.
返回值:返回参数dest 的字符串起始地址.
范例
#inclue <string.h>
main()
{
char a[30] = "string(1)";
char b[] = "string(2)";
printf("before strncpy() : %s\n", a);
printf("after strncpy() : %s\n", strncpy(a, b, 6));
}
执行结果:
before strncpy() : string(1)
after strncpy() : string(1)
strncasecmp()—字符串比较函数(忽略大小写)
相关函数:bcmp, memcmp, strcmp, strcoll, strncmp
头文件:#include <string.h>
定义函数:int strncasecmp(const char *s1, const char *s2, size_t n);
函数说明:strncasecmp()用来比较参数s1 和s2 字符串前n 个字符, 比较时会自动忽略大小写的差异.
返回值:若参数s1 和s2 字符串相同则返回0. s1 若大于s2 则返回大于0 的值, s1 若小于s2 则返回小于0 的值.
范例
#include <string.h>
main()
头文件:#include <string.h>
定义函数:int strncasecmp(const char *s1, const char *s2, size_t n);
函数说明:strncasecmp()用来比较参数s1 和s2 字符串前n 个字符, 比较时会自动忽略大小写的差异.
返回值:若参数s1 和s2 字符串相同则返回0. s1 若大于s2 则返回大于0 的值, s1 若小于s2 则返回小于0 的值.
范例
#include <string.h>
main()
{
char *a = "aBcDeF";
char *b = "AbCdEf";
if(!strncasecmp(a, b))
printf("%s =%s\n", a, b);
}
执行结果:
aBcDef=AbCdEf
char *a = "aBcDeF";
char *b = "AbCdEf";
if(!strncasecmp(a, b))
printf("%s =%s\n", a, b);
}
执行结果:
aBcDef=AbCdEf
strlen()—字符串长度计算函数
相关函数:无
头文件:#include <string.h>
头文件:#include <string.h>
定义函数:size_t strlen (const char *s);
函数说明:strlen()用来计算指定的字符串s 的长度, 不包括结束字符"\0".
返回值:返回字符串s 的字符数.
范例:
/*取得字符串str 的长度 */
#include <string.h>
main()
{
char *str = "12345678";
printf("str length = %d\n", strlen(str));
}
函数说明:strlen()用来计算指定的字符串s 的长度, 不包括结束字符"\0".
返回值:返回字符串s 的字符数.
范例:
/*取得字符串str 的长度 */
#include <string.h>
main()
{
char *str = "12345678";
printf("str length = %d\n", strlen(str));
}
执行结果:
str length = 8
str length = 8
strdup()—复制字符串
相关函数:calloc, malloc, realloc, free
头文件:#include <string.h>
定义函数:char * strdup(const char *s);
函数说明:strdup()会先用maolloc()配置与参数s 字符串相同的空间大小, 然后将参数s 字符串的内容复制到该内存地址, 然后把该地址返回. 该地址最后可以利用free()来释放.
返回值:返回一字符串指针, 该指针指向复制后的新字符串地址. 若返回NULL 表示内存不足.
头文件:#include <string.h>
定义函数:char * strdup(const char *s);
函数说明:strdup()会先用maolloc()配置与参数s 字符串相同的空间大小, 然后将参数s 字符串的内容复制到该内存地址, 然后把该地址返回. 该地址最后可以利用free()来释放.
返回值:返回一字符串指针, 该指针指向复制后的新字符串地址. 若返回NULL 表示内存不足.
范例
#include <string.h>
main()
{
char a[] = "strdup";
char *b;
b = strdup(a);
printf("b[]=\"%s\"\n", b);
}
执行结果:
b[]="strdup"
strcspn()—查字符串
相关函数:strspn
头文件:#inclued<string.h>
定义函数:size_t strcspn(const char *s, const char * reject);
函数说明:strcspn()从参数s 字符串的开头计算连续的字符, 而这些字符都完全不在参数reject 所指的字符串中. 简单地说, 若strcspn()返回的数值为n, 则代表字符串s 开头连续有n 个字符都不含字符串reject 内的字符.
返回值:返回字符串s 开头连续不含字符串reject 内的字符数目.
范例
#include <string.h>
main()
头文件:#inclued<string.h>
定义函数:size_t strcspn(const char *s, const char * reject);
函数说明:strcspn()从参数s 字符串的开头计算连续的字符, 而这些字符都完全不在参数reject 所指的字符串中. 简单地说, 若strcspn()返回的数值为n, 则代表字符串s 开头连续有n 个字符都不含字符串reject 内的字符.
返回值:返回字符串s 开头连续不含字符串reject 内的字符数目.
范例
#include <string.h>
main()
{
char *str = "Linux was first developed for 386/486-based pcs. ";
printf("%d\n", strcspn(str, " "));
printf("%d\n", strcspn(str, "/-"));
printf("%d\n", strcspn(str, "1234567890"));
}
执行结果:
5 //只计算到" "的出现, 所以返回"Linux"的长度
33 //计算到出现"/"或"-", 所以返回到"6"的长度
30 // 计算到出现数字字符为止, 所以返回"3"出现前的长度
字符串比较函数实现
char *str = "Linux was first developed for 386/486-based pcs. ";
printf("%d\n", strcspn(str, " "));
printf("%d\n", strcspn(str, "/-"));
printf("%d\n", strcspn(str, "1234567890"));
}
执行结果:
5 //只计算到" "的出现, 所以返回"Linux"的长度
33 //计算到出现"/"或"-", 所以返回到"6"的长度
30 // 计算到出现数字字符为止, 所以返回"3"出现前的长度
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论