0

简而言之,目前下面的代码输出: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);
}
4

1 回答 1

2

strsep函数的文档

char *strsep(char **stringp, const char *delim);

如果*stringp为 NULL,则strsep()函数返回NULL并且不执行任何其他操作。否则,此函数查找字符串中的第一个标记,该标记由字符串*stringp中的一个字节分隔 delim'\0'该标记通过用空字节 ( )覆盖分隔符来终止,*stringp更新为指向该标记。如果没有找到分隔符,则将标记视为整个 string *stringp,并*stringp制作NULL

因此,在您的程序的情况下,您应该打印ret而不是bonus

bonus = strsep(&ret, "=");

printf("The substring is: %s\n", ret);

既然ret会指向过去的令牌"="

于 2020-06-03T01:35:46.850 回答