如何比较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");
然后用strcmp
与searchName
比较。
要查找 -
之后的子字符串,请使用 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;
}
我有一个关于只比较字符串的一部分的问题
例如:
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");
然后用strcmp
与searchName
比较。
要查找 -
之后的子字符串,请使用 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;
}