我有一个关于只比较字符串的某些部分的问题
例如:
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"。