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

时间:2015-03-04 13:47:58

标签: c string compare

我有一个关于只比较字符串

的某些部分的问题

例如:

char *string = "nameOfPeople_Allen";

char searchName[20] = "Allen";

如何从char *string = "nameOfPeople_Allen";修剪_以获取名称Allen,然后将其与searchName进行比较,我知道如何比较字符串,但是如何获取来自"nameOfPeople_Allen"的{​​{1}}的最后一部分?

5 个答案:

答案 0 :(得分:3)

只需使用strchr()

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

答案 1 :(得分:3)

使用strstr标准库函数。

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

然后使用strcmp将其与searchName进行比较。

-使用strchr

之后查找子字符串
char *temp = strchr(string, '_');   
if(temp)  
    printf("%s\n", temp+1);

答案 2 :(得分: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;
}

答案 3 :(得分:0)

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

来帮助自己

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

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

答案 4 :(得分:0)

如果您因某种原因想要循环使用它,请尝试以下方法:

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”。