【发布时间】:2020-09-21 14:40:01
【问题描述】:
简而言之,目前以下代码输出:The substring is AES。不幸的是,我希望得到结果The substring is 100。这是因为strsep() 仅保留拆分的第一部分,而不保留第二部分。有没有办法让第二部分成为保留的部分?
#include <stdio.h>
#include <string.h>
int main () {
const char haystack[50] = "SHA1 = 99\nAES = 100";
const char needle[10] = "Point";
char *ret;
char *bonus;
ret = strstr(haystack, "AES");
bonus = strsep(&ret, "=");
printf("The substring is: %s\n", bonus);
return(0);
}
【问题讨论】:
-
打印
ret而不是bonus:printf("The substring is: %s\n", ret); -
成功了!我不知道。
-
文档非常清楚它是如何工作的:man7.org/linux/man-pages/man3/strsep.3.html
-
这是为了方便编写循环来处理由分隔符分隔的多个字段。
while ((f = strsep(&ret, ",")) != NULL) process_field(f);