一、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/zh-tw/n/146594.html