[英]strstr to find a word in a string using c returning true all the time
[英]How to loop a string using strstr to find substrings in C
我正在尝试从较大的字符串中查找信息的不同子字符串,其中信息之间用":"
分隔
例如: username:id:password:info
如何在C中使用strstr
函数循环此字符串以将信息提取到不同的子字符串中?
到目前为止,我已经尝试过类似的方法:
char string[] = "username:id:password:info"
char *endptr;
if((endptr = strstr(string, ":")) != NULL) {
char *result = malloc(endptr - string + 1);
if(result != NULL) {
memcpy(result, string, (endptr - string));
result[endptr - string] = '\0';
username = strdup(result);
free(result);
}
}
我想使此loopable提取所有子字符串。
从较大的字符串中查找信息的不同子字符串,该较大的字符串中的信息用“:”分隔
如何在C中使用strstr
函数循环此字符串以将信息提取到不同的子字符串中?
strstr()
并不是执行此任务的最佳工具,但可用于查找":"
。
相反,我建议strcspn(string, "\\n")
因为目标是找到下一个":"
或 null字符 。
OP'c代码接近形成循环,但还需要处理最后一个标记,该标记缺少最后的':'
。
void parse_colon(const char *string) {
while (*string) { // loop until at the end
size_t len;
const char *endptr = strstr(string, ":"); // much like OP's code
if (endptr) {
len = (size_t) (endptr - string); // much like OP's code
endptr++;
} else {
len = strlen(string);
endptr = string + len;
}
char *result = malloc(len + 1);
if (result) {
memcpy(result, string, len);
result[len] = '\0';
puts(result);
free(result);
}
string = endptr;
}
}
int main(void) {
parse_colon("username:id:password:info");
}
产量
username
id
password
info
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.