我可以在字符串中搜索C中的字符(X或Y)吗?
我试图在字符串中搜索一个字符以找到它在字符串中的位置,但是,该字符可以是三个字符之一 我正试图实现这一点:我可以在字符串中搜索C中的字符(X或Y)吗?,c,search,strstr,C,Search,Strstr,我试图在字符串中搜索一个字符以找到它在字符串中的位置,但是,该字符可以是三个字符之一 我正试图实现这一点: char *foo = strstr(string, x); 其中x可以是i、j或k 进行此操作的最佳方式是什么?您正在寻找函数 char *foo = string + strcspn(string, "ijk"); 如果你只想要这个职位,那就 size_t position = strcspn(string, "ijk"); 这是如何在本例中使用它的示例实现 #include &
char *foo = strstr(string, x);
其中x可以是i、j或k
进行此操作的最佳方式是什么?您正在寻找函数
char *foo = string + strcspn(string, "ijk");
如果你只想要这个职位,那就
size_t position = strcspn(string, "ijk");
这是如何在本例中使用它的示例实现
#include <stdio.h>
const char *findany(const char *const haystack, const char *const needle)
{
size_t skip;
if (haystack == NULL)
return NULL;
if (needle == NULL)
return haystack;
skip = strcspn(haystack, needle);
if (*(haystack + skip) == '\0')
return NULL;
return haystack + skip;
}
int main(void)
{
const char *string = "xksjadueaailkik";
const char *found;
found = string;
while ((found = findany(found, "ijk")) != NULL)
printf("%s\n", found++);
return 0;
}
return 0;
这使得findany函数类似于strchr,但它需要一组字符而不是单个字符
注意:我刚刚注意到这是strpbrk的重新发明,因此这是正确的解决方案,即BLUEPIXY的答案。对我来说是新的。问一下,这是否满足i、j或k的要求?strcspn返回从第一个字符到第一个出现的ijk的子字符串的大小。苏拉夫在第一次事件中为原告辩护。@LPs在这种情况下它仍然有用。
ksjadueaailkik
jadueaailkik
ilkik
kik
ik
k
#include <stdio.h>
#include <string.h>
int main(void){
char *string = "I'm trying to search a string";
char *x = "ijk";
char *foo = strpbrk(string, x);
if(foo)
printf("%c at %d\n", *foo, foo - string);//zero origin
else
puts("not found");
return 0;
}