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

how to compare some part of a string in 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 %s\n", pointer + 1);
 }

使用strstr标准库函数。

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

然后用strcmpsearchName比较。

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

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

至于修剪,无论你做什么,不要修改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".

简单快捷的方法:

// 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;
}