gpt4 book ai didi

c - Sscanf 和自定义中断

转载 作者:行者123 更新时间:2023-12-04 12:00:31 26 4
gpt4 key购买 nike

我有一个包含空格和标签的字符串,例如:

<note label="description">sp|P02671|FIBA_HUMAN Fibrinogen alpha chain OS=Homo sapiens GN=FGA PE=1 SV=2</note>

我只想捕获描述标签之后和“OS=”之前的部分,并且想知道使用自定义符号处理 sscanf 是否有意义(请参阅页面底部我当前正在进行的工作)或者它是否是最好使用第二个 strstr 来解析操作系统。

提前致谢

-- 附加信息 --

if ( (p_str = (char*) strstr(buffer,"\"description\">")) ) {
sscanf(p_str+14,"%[^OS]",(file+teller)->description);
}

PS:%[^OS] 在第一次出现“O”时中断字符串,我很想知道如何输入一组字符(如果可能的话)。

最佳答案

我宁愿使用strstr两次,如下:

#include <assert.h>
#include <stdlib.h>
#include <string.h>

char *f (const char *s) {
#define START_SYM "\"description\""
#define END_SYM "OS="

char *dst = NULL;
char *start = strstr(s, START_SYM);
char *end = strstr(s, END_SYM);

if (start != NULL && end != NULL) {
ptrdiff_t diff = end - start;

assert(diff > 0);
dst = malloc(diff + 1);

if (dst != NULL) {
memcpy(dst, start + sizeof START_SYM, diff);
dst[diff] = '\0';
}
}

return dst;
}

关于c - Sscanf 和自定义中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15072308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com