gpt4 book ai didi

按数字顺序比较 xmlChar

转载 作者:行者123 更新时间:2023-11-30 17:42:44 31 4
gpt4 key购买 nike

我编写了一个函数来防止 XML 文件中出现重复:

xmlNodePtr node;
xmlChar *position;
gchar buf_position[G_ASCII_DTOSTR_BUF_SIZE];

g_ascii_formatd( buf_position, sizeof(buf_position), "%g", point->x);

/* Remove duplicates */
for (node = renderer-root->children; node; node = node->next) {
if ((XML_ELEMENT_NODE == node->type) && xmlStrEqual((const xmlChar *)"point", node->name)) {
buf_position = xmlGetProp(node, (const xmlChar *)"position");
if (xmlStrEqual((const xmlChar *)position, (const xmlChar *)buf_position) {
if(buf_position) xmlFree(buf_position);
return;
}
if(propx) xmlFree(propx);

与此类似,我想编写一个函数来比较每个 xmlChar 位置并查看它们是否按数字顺序和连续顺序(以“0”开头)。

有效 XML 示例:

<point position="0"/>
<point position="1"/>
<point position="2"/>
.....................

无效 XML 示例:

<point position="0"/>
<point position="5"/> /* need function to return */
<point position="2"/>
.....................

最佳答案

要检查单调性,请记住最后一个值并要求当前值更大。以您的代码作为模板:

xmlNodePtr node;
double last_position = -1;

for (node = renderer-root->children; node; node = node->next) {
if ((XML_ELEMENT_NODE == node->type) && xmlStrEqual((const xmlChar *)"point", node->name)) {
xmlChar *position_str = xmlGetProp(node, (const xmlChar *)"position");
double position = strtod(position_str, NULL);
xmlFree(position_str);
if (position <= last_position) {
/* position out of order */
return;
}
...

关于按数字顺序比较 xmlChar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20426178/

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