如何比较c中字符串的某些部分



我有一个关于只比较字符串的某些部分的问题

例如:

char *string = "nameOfPeople_Allen";
char searchName[20] = "Allen";

如何从_中修剪char *string = "nameOfPeople_Allen";以获得名称Allen,然后将其与searchName进行比较,我知道如何比较字符串,但如何从_中获得"nameOfPeople_Allen"的最后部分?

只需使用strchr()

char *pointer;
if ((pointer = strchr(string, '_')) != NULL)
 {
    printf("The text after _ is %sn", pointer + 1);
 }

使用strstr标准库函数。

char *temp = strstr(string, "Allen"); 

然后使用CCD_ 9将其与CCD_。

要查找-之后的子字符串,请使用strchr

char *temp = strchr(string, '_');   
if(temp)  
    printf("%sn", temp+1);

简单快捷的方法:

// static inline if you are interested
int sameName(const char *string, const char *searchName) {
    const char *p;
    return (p = strchr(string, '_')) && strcmp(p+1, searchName) == 0;
}

至于修剪,无论您做什么,都不要修改string,因为它是在只读内存中分配的。(您可以在这里使用const char* string

但是您可以使用strstr检查遏制:

if (strstr(string, "Allen"))...

如果您出于某种原因想要循环通过它,请尝试以下操作:

int i, check = 0, position = 0;
char part_of_string[20];
for(i = 0; i < strlen(string); i++){
    if(check){ 
         part_of_string[position] = string[i];
         position++;
    }else if(string[i] == '_'){
         check = 1;
    }
}

现在part_of_string包含"_"字符后面的字符。您可以将其与strcmp()进行比较,或者再次循环查看"Alan"。

相关内容

  • 没有找到相关文章

最新更新