我有一个关于只比较字符串
的某些部分的问题例如:
char *string = "nameOfPeople_Allen";
char searchName[20] = "Allen";
如何从char *string = "nameOfPeople_Allen";
修剪_
以获取名称Allen
,然后将其与searchName
进行比较,我知道如何比较字符串,但是如何获取来自"nameOfPeople_Allen"
的{{1}}的最后一部分?
答案 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”。