Невозможно обработать данные с помощью sscanf - PullRequest
0 голосов
/ 24 мая 2019

Мне нужно пройти через строковые данные и сохранить значения в них в отдельных полях, чтобы позже выполнить операции с этими данными.Я пытаюсь использовать 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...