int main() { int i; char *str1 = "agfedcba"; char *str2 = "cba";
i = strcspn(str1, str2); printf("%d\n",i);
return 0; }
求str2 在 str1中首次出现的位置 为什么结果是0??
喵喵时光机
浏览 249回答 3
3回答
HUX布斯
size_t strcspn(const char *str,const char *strCharSet);对返回值的描述如下:These functions return the index of the first character in str that is in strCharSet.If none of the characters in str is in strCharSet, then the return value is the length of str.No return value is reserved to indicate an error.我的理解如下:这个函数的的功能是,字符串str中第一次出现的某个字符,这个字符同时存在于 strCharSet中,返回这个字符在str中的索引值。若字符串strCharSet 中,都没有一个字符和 str中的相同,则返回str的字符串长度。若无返回值则 出错。描述得可能不太清楚,举个例子(第一个参数描述为str,第二个参数描述为strCharSet ):1、strcspn( "xyzbxz", "abc" ) = 3 ,str中第一次出现 strCharSet 中存在的字符'b' ,该'b'在str里面的索引是3。所以返回值为32、strcspn("agfedcba", "cba") = 0 ,str中第一个字符'a' 在 strCharSet 存在,所以返回值为 03、strcspn( "xyzbxz", "" ) = 6 ,str中的任何一个字符,在strCharSet 都不存在一样的,所以返回str字符串的长度。