Мне нужно пройти через строковые данные и сохранить значения в них в отдельных полях, чтобы позже выполнить операции с этими данными.Я пытаюсь использовать sscanf для достижения этой цели, но при использовании sscanf я сталкиваюсь с проблемами в получении желаемых результатов.Данные не разделяются по мере необходимости.Я думаю, что это может быть проблемой синтаксиса, так как я новичок в языке C.
Я уже пытался сделать то же самое, предоставив аргументы и форматы для разделения текста, но это не сработало.
XYZ123 CONFIRMED MT 2019-04-30T13:30:00+02:00
В приведенной выше строке мне нужно отделить XYZ123, второе мне нужно ПОДТВЕРЖДЕНО, третий MT и остальные данные в 4-м поле.
sscanf(pMMFk81->or4wnew,"%10[^ ]%c%10[^ ]%c%10[^ ]%c%100[^\0]",
szBusField1, space, szBusField2, space1, szBusField3, space2);
Peice of code
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;
}