一、strspn全称
strspn函数全称为String span,是C语言标准库中的一个字符串处理函数,它用于计算一个字符串中连续包含另一个字符串中字符的长度。
二、strspn函数原型
size_t strspn(const char *str1, const char *str2);
str1为要计算其包含str2中字符的字符串指针,str2为被包含字符的字符串指针。函数返回值为str1中连续包含str2中字符的长度。
三、strspn函数用法
选取1:判断字符串中是否只包含数字
#include <stdio.h> #include <string.h> int main() { char str[] = "1234567abc"; char pattern[] = "0123456789"; size_t length = strspn(str, pattern); if (length == strlen(str)) { printf("字符串包含的全部是数字!\n"); } else { printf("字符串不全是数字或为空!\n"); } return 0; }
以上代码中,我们需要判断字符串str是否只包含数字。使用strspn函数,用pattern字符串匹配str,返回值为匹配上的长度。 若该长度等于str字符串长度,则说明str中只包含由pattern字符串中的字符组成的数字。
选取2:从字符串开头截取数字串
#include <stdio.h> #include <string.h> int main() { char str[] = "123,abc"; char pattern[] = "0123456789"; size_t length = strspn(str, pattern); char substr[length + 1]; memcpy(substr, str, length); substr[length] = '\0'; printf("截取到的数字串为:%s\n", substr); return 0; }
以上代码中,我们需要从字符串str的开头截取数字串。使用strspn函数,用pattern字符串匹配str,返回值为匹配上的长度。然后利用memcpy函数将匹配部分复制到新的substr字符串中。
选取3:判断字符串中是否只包含特定字符集合
#include <stdio.h> #include <string.h> int main() { char str[] = "abcde"; char pattern[] = "abc"; size_t length = strspn(str, pattern); if (length == strlen(str)) { printf("字符串只包含了特定字符集合中的字符!\n"); } else { printf("字符串中有特定字符集合以外的字符!\n"); } return 0; }
以上代码中,我们需要判断字符串str中是否只包含特定字符集合,即pattern中的字符。使用strspn函数将pattern与str匹配,返回值为匹配上的长度。若该长度等于str长度,说明str只包含pattern中的字符。
选取4:自定义字符串匹配函数
#include <stdio.h> #include <string.h> size_t my_strspn(const char *str1, const char *str2) { size_t i, j; for (i = 0; str1[i]; ++i) { for (j = 0; str2[j]; ++j) { if (str1[i] == str2[j]) { break; } } if (!str2[j]) { break; } } return i; } int main() { char str[] = "123,abc"; char pattern[] = "0123456789"; size_t length = my_strspn(str, pattern); char substr[length + 1]; memcpy(substr, str, length); substr[length] = '\0'; printf("截取到的数字串为:%s\n", substr); return 0; }
以上代码中,我们需要自定义一个字符串匹配函数my_strspn,使用方式与strspn相同。在my_strspn中,我们使用两个嵌套的for循环进行匹配,找到匹配上的位置并返回其长度。
原创文章,作者:UMMP,如若转载,请注明出处:https://www.506064.com/n/146594.html