/*
自己实现库函数:strtok
*/
#include <stdio.h>
#include <string.h>
char *mystrtok(char *src, char *delim)
{
char *begin, *end;
static char *savep = "";
begin = src ? src : savep;
begin = begin + strspn(begin, delim);
if(*begin == '\0'){
savep = "";
return NULL;
}
end = begin + strcspn(begin, delim);
if(*end != '\0'){
*end++ = '\0';
}
savep = end;
return begin;
}
int main(int argc, char *argv[])
{
char *token, *begin;
for(begin = argv[1]; (token = mystrtok(begin, argv[2])); begin = NULL ){
printf("token:%s\n", token);
}
return 0;
}<pre name="code" class="cpp">
/*
int strspn(const char *, const char *);
strspn函数范例strspn(“abc”, “bcd”),搜索字符串“abc”中
是否有不存在于字符集“bcd”中出现的字符。如„a‟没有出现
在”bcd”中,则函数返回字符串“abc”中„a‟的下标:0,如果
第一个参数代表的字符串中的所有字符都出现在第二个参数
代表的字符串中则函数返回'\0'字符的下标:3。
*/
/*
strcspn函数范例strcspn(“abc”, “bcd”),搜索字符串“abc”
中出现在”bcd”字符集中的字符返回其下标,则函数应该返
回“abc”中„b‟的下标:1;若第一个参数中所有字符都没有
在第二个参数中出现则返回„\0'的下标。
*/
#include <stdio.h>
#include <string.h>
//#include <strlib.h>
int main(void)
{
int t;
char str1[20];
char str2[20];
gets(str1);
gets(str2);
t = strspn(str1, str2);
printf("strspn:%d\n", t);
t = strcspn(str1, str2);
printf("strcspn:%d\n", t);
return 0;
}
/*
akaedu@akaedu-G41MT-D3:~/lin/722_str$ ./strspn
abc
bcd
strspn:0
strcspn:1
akaedu@akaedu-G41MT-D3:~/lin/722_str$ ./strspn
abc
abc
strspn:3
strcspn:0
akaedu@akaedu-G41MT-D3:~/lin/722_str$ ./strspn
abc
bcd
strspn:0
strcspn:1
akaedu@akaedu-G41MT-D3:~/lin/722_str$ ./strspn
abc
def
strspn:0
strcspn:3
*/
mystrtok, strspn, strcspn
最新推荐文章于 2023-08-20 23:44:31 发布