c - 无法使用 sscanf 处理数据
问题描述
我需要遍历一个字符串数据并将其中的值存储在单独的字段中,以便稍后对该数据执行操作。我正在尝试使用 sscanf 来实现这一点,但是在使用 sscanf 时,我在获得所需结果方面遇到了问题。数据没有按要求分开。我认为这可能是一个语法问题,因为我是 C 语言的新手。
我已经尝试通过提供参数和格式来分隔文本来做同样的事情,但它不起作用。
XYZ123 CONFIRMED MT 2019-04-30T13:30:00+02:00
在上面的字符串中,我需要分隔 XYZ123,第二个我需要 CONFIRMED,第三个 MT 和第四个字段中的其余数据。
sscanf(pMMFk81->or4wnew,"%10[^ ]%c%10[^ ]%c%10[^ ]%c%100[^\0]",
szBusField1, space, szBusField2, space1, szBusField3, space2);
代码片段
void AddBsiAttributeSection(PARSED_XML * pXML,
int ixLevel1,
OR4WR81 * pMMFk81) {
int ixLevel2 = 0;
int ixLevel3 = 0;
int ixLevel4 = 0;
char space[10] = "";
char space1[10] = "";
char space2[10] = "";
char szBusField1[10] = "";
char szBusField2[10] = "";
char szBusField3[10] = "";
char szBusField4[10] = "";
char szData[80 + 1] = "";
// ----------------------
// Set up
// <xsd:Attribute>
// <xsd:Name>BusID</xsd:Name>
// <xsd:CurrentValue>
// <xsd:STRING>XYZ1234</xsd:STRING>
// </xsd:CurrentValue>
// <xsd:Attribute>
// ----------------------
sscanf(pMMFk81 - > or4wnew, "%10[^ ] %10[^ ] %10[^ ] %100[^\0]", szBusField1, szBusField2, szBusField3, szBusField4);
ixLevel2 = XML_AddElement(pXML, ixLevel1, FIRXML_NS_XSD, FIRXML_AFEN_Attribute, "");
XML_AddElement(pXML, ixLevel2, FIRXML_NS_XSD, FIRXML_AFEN_Name, FIRXML_AFEN_BUSID);
ixLevel3 = XML_AddElement(pXML, ixLevel2, FIRXML_NS_XSD, FIRXML_AFEN_CurrentValue, "");
// sprintf (szData,"%6.6s",pASTk80->or4blcc);
XML_AddElement(pXML, ixLevel3, FIRXML_NS_XSD, FIRXML_AFEN_STRING, szBusField1);
// ----------------------
// Set up
// <xsd:Attribute>
// <xsd:Name>Qualifier</xsd:Name>
// <xsd:CurrentValue>
// <xsd:STRING>ARRIVED_DROPOFF</xsd:STRING>
// </xsd:CurrentValue>
// </xsd:Attribute>
// ----------------------
ixLevel3 = XML_AddElement(pXML, ixLevel2, FIRXML_NS_XSD, FIRXML_AFEN_Attribute, "");
XML_AddElement(pXML, ixLevel3, FIRXML_NS_XSD, FIRXML_AFEN_Name, FIRXML_AFEN_QUALIFIER);
ixLevel4 = XML_AddElement(pXML, ixLevel3, FIRXML_NS_XSD, FIRXML_AFEN_CurrentValue, "");
// sprintf (szData,"%3.3s",pStnArr); // Arrival station
XML_AddElement(pXML, ixLevel4, FIRXML_NS_XSD, FIRXML_AFEN_STRING, szBusField2);
// ----------------------
// Set up
// <xsd:Attribute>
// <xsd:Name>Source</xsd:Name>
// <xsd:CurrentValue>
// <xsd:STRING>MT</xsd:STRING>
// </xsd:CurrentValue>
// </xsd:Attribute>
// ----------------------
ixLevel3 = XML_AddElement(pXML, ixLevel2, FIRXML_NS_XSD, FIRXML_AFEN_Attribute, "");
XML_AddElement(pXML, ixLevel3, FIRXML_NS_XSD, FIRXML_AFEN_Name, FIRXML_AFEN_SOURCE);
ixLevel4 = XML_AddElement(pXML, ixLevel3, FIRXML_NS_XSD, FIRXML_AFEN_CurrentValue, "");
XML_AddElement(pXML, ixLevel4, FIRXML_NS_XSD, FIRXML_AFEN_STRING, szBusField3);
// ----------------------
// <xsd:Attribute>
// <xsd:Name>BusTime</xsd:Name>
// <xsd:CurrentValue>
// <xsd:DATETIME>2019-04-30T13:32:00+01:00</xsd:DATETIME>
// </xsd:CurrentValue>
// </xsd:Attribute>
// ----------------------
ixLevel3 = XML_AddElement(pXML, ixLevel2, FIRXML_NS_XSD, FIRXML_AFEN_Attribute, "");
XML_AddElement(pXML, ixLevel3, FIRXML_NS_XSD, FIRXML_AFEN_Name, FIRXML_AFEN_BUSTIME);
ixLevel4 = XML_AddElement(pXML, ixLevel3, FIRXML_NS_XSD, FIRXML_AFEN_CurrentValue, "");
XML_AddElement(pXML, ixLevel4, FIRXML_NS_XSD, FIRXML_AFEN_STRING, szBusField4);
return;
}
解决方案
推荐阅读
- php - PhpStorm 调试 - 路径映射配置错误
- python - folium.Marker 无法正确解码
- c - 多级“结构继承”是否保证可以在任何地方工作?
- java - HQL如何以对象列表为一组条件查询表?
- javascript - 使用 redux 获取树形图的数据
- reactjs - react-select async 持久选择选项
- inno-setup - 是否可以在 Inno Setup 中执行其他应用程序时启用单击安装页面?
- reactjs - 更改浏览器地址栏中的路线,但没有任何变化
- node.js - 组件中的角度变量未在模板中呈现
- reactjs - 代码覆盖 Cypress 和 Storybook,无法检测我的代码