Segmentation foult nur beim Debuggen ???
-
Hallo @ all - bin wiedermal lästig
ich bekomme den Fehler lustigerweise nur beim debuggen (siehe Link)
Irgendwie schieße ich über das Ziel hinaus obwohl meine Zählervariable (ibuf = 24655) noch unterhalb der size (24794) ist.
Wie auch im Bild (unten) ersichtlich sollte er bei OMDS (markiert) aufhören was aber nicht passiert.
Hier mal der ganze Code:#include <stdio.h> #include <stdlib.h> #include <string.h> int main (){ //Datei öffnen FILE *file; file = fopen("Testdaten213.xml","r"); // Testen ob öffnen geklappt hat if (!file){ printf("Konnte Datei %s nicht öffnen", file); // Gehört noch ausgebessert da file bei Fehler null ist! return 1; } // Größe von file ermitteln fseek(file,0,SEEK_END); int size = ftell(file); fseek(file,0,SEEK_SET); // Speicher reservieren char *buftext = (char*) malloc(size+1 * sizeof(char)); char *text = (char*) malloc(size+1 * sizeof(char)); if (buftext == NULL){ printf("konnte Speicher nicht reservieren!"); return 1; } int i = 0, ibuf = 0; char nodenamestart[60] = "" , nodenameende[60] = ""; // File in Buffer schreiben fread(buftext,size,1,file); // Endbyte setzen buftext[size+1] = '\0'; //file schließen fclose(file); while (buftext[ibuf] != '\0'){ if (ibuf == size+1) break; //Nodenamen vergleichen (Start und End) if (buftext[ibuf] != '>' || (buftext[ibuf] != '/' && buftext[ibuf+1] != '>')) // > oder /> { if (buftext[ibuf] == '\n'){ ibuf++; continue; } if (buftext[ibuf] == '<'){ // Anfang Node <......> if(buftext[ibuf] == '<' && buftext[ibuf+1] == '/'){ // Ende HauptNode </....> ibuf+=2; while (buftext[ibuf] != '>') nodenameende[i++] = buftext[ibuf++]; // Nodename Ende nodenameende[i] = '\0'; i = 0; printf("Nodenameende: %s\n", nodenameende); continue; // Code unten wird übersprungen! } ibuf++; // Anfang überspringen: < while (buftext[ibuf] != ' ') // Nach Nodenamen kommt Leerzeichen! und dann Innertext { if (buftext[ibuf] == '?') //xml Version usw. - um das ? nicht mitzunehmen um 1 erhöhen ibuf++; nodenamestart[i++] = buftext[ibuf++]; // Nodename Start } nodenamestart[i] = '\0'; i = 0; printf("Nodenamestart: %s\n", nodenamestart); // Innertext: while (buftext[ibuf] != '>'){ // bis zum Ende der Node durchlaufen text[i++] = buftext[ibuf++]; } text[i] = '\0'; if (text[i-1] == '/') printf("Child - Innertext: %s\n", text); else printf("Innertext: %s\n", text); printf("Nodeende: %s\n", nodenamestart); i = 0; } } ibuf++; } free(buftext); free(text); return 0; }
und meine XML file fals es wer testen will:
<?xml version="1.0" encoding="UTF-8"?> <OMDS xmlns="urn:omds20" xmlns:asx="http://www.sap.com/abapxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <PAKET DVRNrAbs="00099999" MaklerID="109999" OMDSVersion="213-00" PaketInhCd="VM" PaketUmfCd="G" PaketZpktErstell="2021-01-01T15:12:39" VUNr="099"> <PERSON Hausnr="99" LandesCd="AUT" Ort="Kaindorf bei Hartberg" PLZ="8224" PersArtCd="S" Personennr="2918745850@13866256" Strasse="Kaindorf"> <SONSTIGE_PERSON Name="Ihr Versicherungsmakler GmbH" SonstPersArtCd="0"/> </PERSON> <PERSON Hausnr="88" LandesCd="AUT" Ort="Kaindorf bei Hartberg" PLZ="8224" PersArtCd="N" Personennr="2918965473@15462572" Strasse="Strada"> <NATUERLICHE_PERSON Familienname="Famnam" FamilienstandCd="0" Gebdat="1973-05-14" GeschlechtCd="2" LandesCd="AUT" Vorname="Vornam"/> </PERSON> <PERSON Hausnr="4" LandesCd="AUT" Ort="Wien" PLZ="1210" PersArtCd="N" Personennr="2918072343@11435234" Strasse="Versicherungsstraße"> <NATUERLICHE_PERSON Familienname="Mustermax" FamilienstandCd="0" Gebdat="1966-04-29" GeschlechtCd="1" LandesCd="AUT" Vorname="Nikolaus"/> <EL-Text TxtArtCd="ANR" TxtInhalt="Herr"/> <EL-Text TxtArtCd="TIT" TxtInhalt="Ing."/> </PERSON> <PERSON Hausnr="4" LandesCd="AUT" Ort="Wien" PLZ="1210" PersArtCd="N" Personennr="2918072344@11435237" Strasse="Versicherungsstraße"> <NATUERLICHE_PERSON Familienname="Mustermax" FamilienstandCd="0" Gebdat="1967-05-14" GeschlechtCd="2" LandesCd="AUT" Vorname="Silvia"/> <EL-Text TxtArtCd="ANR" TxtInhalt="Frau"/> <EL-Text TxtArtCd="TIT" TxtInhalt="Mag."/> </PERSON> <PERSON Hausnr="4" LandesCd="AUT" Ort="Wien" PLZ="1210" PersArtCd="N" Personennr="2918072345@11435242" Strasse="Versicherungsstraße"> <NATUERLICHE_PERSON Familienname="Mustermax" FamilienstandCd="0" Gebdat="1996-02-03" GeschlechtCd="2" LandesCd="AUT" Vorname="Caroline"/> <EL-Text TxtArtCd="ANR" TxtInhalt="Frau"/> </PERSON> <PERSON Hausnr="4" LandesCd="AUT" Ort="Wien" PLZ="1210" PersArtCd="N" Personennr="2918072346@11435245" Strasse="Versicherungsstraße"> <NATUERLICHE_PERSON Familienname="Mustermax" FamilienstandCd="0" Gebdat="1998-03-02" GeschlechtCd="2" LandesCd="AUT" Vorname="Hanna"/> <EL-Text TxtArtCd="ANR" TxtInhalt="Frau"/> </PERSON> <!-- KFZ --> <VERTRAG AendGrundCd="NEU" AendGrundbez="NEUZUGANG" DurchfDat="2017-03-20" GueltigBeg="2017-03-14" Hptfaelligkeit="--04-01" Polizzennr="XX-I000.123" PraemieBtoVtg="10.00" PraemieNtoVtg="9.01" Vermnr="ABCDEF" VertragsID="I000123F" VtgBeg="2017-03-14" VtgEnd="2999-12-31" VtgProdCd="KF" VtgProdukt="EURO-KFZ-Schutz" VtgSparteCd="BKF" VtgStatusCd="1" WaehrungsCd="EUR" ZahlRhythmCd="1" ZahlWegCd="01"> <VERTRAGSPERSON Lfnr="1" Personennr="2918965473@15462572" VtgRolleCd="VN"/> <VERS_OBJEKT ObjLfnr="1" VersObjTxt="CHEVAL LIBERTE GOLD PULLMAN V2 CHEVAL LIBERTE"> <VERS_KFZ AntriebsArtCd="0" Erstzulassdat="2017-03-14" Fahrgestnr="VKD20021VGP002110" FzgArtCd="ANH" Handelsbez="GOLD PULLMAN V2" Hubraum="0" Katkz="0" LandesCd="AUT" Leistung="0" Marke="CHEVAL LIBERTE" Modelljahr="2017" Nutzlast="1720" Plaetze="0" Pol_Kennz="XX-1234X" TypVarVer="CHEVAL LIBERTE" VerwendzweckCd="01" HGeschw="180" Kraftstoffverbr_NEFZ="5.98" VerbrEinhCd="L"/> </VERS_OBJEKT> <SPARTE DirBeteiligtKz="N" PraemieBtoSp="10.00" PraemieNtoSp="9.01" SichergKz="N" SondervereinbarungKz="N" SpartenCd="AH" SpartenErweiterung="ABAH000000" Spartentxt="Haftpflicht 15Mio" VerbandSparteCd="071"> <EL-Entscheidungsfrage EFrageAntw="N" EFrageCd="A02"/> <EL-Klausel Klauselnr="H53-F"/> <EL-Klausel Klauselnr="HA3-F"/> <EL-Praemienkorrektur PraemKorrArtCd="KR" PraemKorrText="Sonderkosten" PraemKorrWert="31.65"/> <EL-Zeitraum ZRArtCd="9" ZRBeg="2017-03-14" ZREnd="2018-04-01"/> <RISIKO PraemFristCd="J" RisikoArtCd="AH1" RisikoBez="Personenschaden" RisikoLfnr="1"> <EL-Objekt ObjLfnr="1"/> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="8200000.00" VSBez="Haftpflicht Personenschaden 17"/> <EL-Versicherungssumme VSArtCd="PVS" VSBetrag="15000000.00" VSBez="W EUR 15 Mio pauschal 17"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="AH1" RisikoBez="Haftpflicht Sachschaden" RisikoLfnr="2"> <EL-Objekt ObjLfnr="1"/> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="1800000.00" VSBez="Haftpflicht Sachschaden 17"/> <EL-Versicherungssumme VSArtCd="PVS" VSBetrag="15000000.00" VSBez="W EUR 15 Mio pauschal 17"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="AH1" RisikoBez="Haftpflicht Vermögensschaden" RisikoLfnr="3"> <EL-Objekt ObjLfnr="1"/> <EL-Versicherungssumme VSArtCd="HLS" VSBetrag="80000.00" VSBez="Haftpflicht Vermögensschaden"/> <EL-Versicherungssumme VSArtCd="PVS" VSBetrag="15000000.00" VSBez="W EUR 15 Mio pauschal 17"/> </RISIKO> </SPARTE> <SPARTE PraemieBtoSp="56.00" PraemieNtoSp="15.00" SpartenCd="AKV" SpartenErweiterung="AK00000" Spartentxt="Vollkasko CHEVAL LIBERTE" VerbandSparteCd="073"> <EL-Betrag BetragArtCd="K01" Bezeichnung="Listenpreis CHEVAL LIBERTE" Wert="12000.00"/> <EL-Einstufung EstArtCd="TVU" EstWert="00"/> <EL-Klausel Klauselnr="K53-F"/> <EL-Klausel Klauselnr="KC6-F"/> <EL-Klausel Klauselnr="KPP-F"/> <EL-Zeitraum ZRArtCd="9" ZRBeg="2014-02-01" ZREnd="2018-02-01"/> <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Glasbruch" RisikoLfnr="1"> <EL-Objekt ObjLfnr="1"/> <EL-Selbstbehalt SbhArtCd="STS" SbhBetrag="290.00"/> <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Glasbruch"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Vandalismus" RisikoLfnr="2"> <EL-Objekt ObjLfnr="1"/> <EL-Selbstbehalt SbhArtCd="STS" SbhBetrag="290.00"/> <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Vandalismus"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Marderbiss" RisikoLfnr="3"> <EL-Objekt ObjLfnr="1"/> <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Marderbiss"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Naturgewalten und Dachlawinen" RisikoLfnr="4"> <EL-Objekt ObjLfnr="1"/> <EL-Selbstbehalt SbhArtCd="STS" SbhBetrag="290.00"/> <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Naturgewalten und Dachlawinen"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Parkschaden" RisikoLfnr="5"> <EL-Objekt ObjLfnr="1"/> <EL-Selbstbehalt SbhArtCd="STS" SbhBetrag="290.00"/> <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Parkschaden"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Schmorschäden" RisikoLfnr="6"> <EL-Objekt ObjLfnr="1"/> <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Schmorschäden"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Brand" RisikoLfnr="7"> <EL-Objekt ObjLfnr="1"/> <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Brand"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Kollision mit Tieren" RisikoLfnr="8"> <EL-Objekt ObjLfnr="1"/> <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Kollision mit Tieren"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Unfall" RisikoLfnr="9"> <EL-Objekt ObjLfnr="1"/> <EL-Selbstbehalt SbhArtCd="STS" SbhBetrag="290.00"/> <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Unfall"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="AK1" RisikoBez="Diebstahl" RisikoLfnr="10"> <EL-Objekt ObjLfnr="1"/> <EL-Versicherungssumme VSArtCd="OVS" VSBetrag="0.00" VSBez="Diebstahl"/> </RISIKO> </SPARTE> </VERTRAG> <!-- Haushalt --> <VERTRAG AendGrundCd="AEP" AendGrundbez="DECKUNGSUMFANG" BIC="GIBAATWW" DurchfDat="2015-03-06" GueltigBeg="2015-04-01" Hptfaelligkeit="--04-01" IBAN="AT142099999999999999" Polizzennr="XX-U999.999" PraemieBtoVtg="180.00" PraemieNtoVtg="300.00" Vermnr="D88888" VertragsID="0261218745" VtgBeg="2000-04-01" VtgEnd="2018-04-01" VtgProdCd="PR" VtgProdukt="Haushalt Superschutz" VtgSparteCd="HH" VtgStatusCd="1" WaehrungsCd="EUR" ZahlRhythmCd="2" ZahlWegCd="02"> <EL-Klausel Klauselnr="02K-N"/> <EL-Klausel Klauselnr="201-N"/> <EL-Klausel Klauselnr="71X-N"/> <EL-Klausel Klauselnr="73A-N"/> <EL-Klausel Klauselnr="900-N"/> <EL-Klausel Klauselnr="R09-N"/> <EL-Text TxtArtCd="FRT" TxtInhalt="Haushalt Superschutz"/> <EL-Text TxtArtCd="FRT" TxtInhalt="Tarif 012005"/> <VERTRAGSPERSON Lfnr="1" Personennr="2918965473@15462572" VtgRolleCd="VN"/> <VERS_OBJEKT ObjLfnr="1" VersObjTxt="Mehrfamilienhaus"> <VERS_SACHE AusstattungCd="Z" GebaeudeArtCd="ME" GebaeudeBez="Mehrfamilienhaus" Hausnr="1" LandesCd="AUT" NutzungCd="S" Ort="Wien" PLZ="1010" Strasse="Rathaus" VersSacheCd="02"> <EL-Objektdaten ObjektdatenCd="08" ObjektdatenInfo="Fläche" Wert="134.00 m²"/> <EL-Objektdaten ObjektdatenCd="99" ObjektdatenInfo="Neuwert" Wert="155976.00"/> </VERS_SACHE> </VERS_OBJEKT> <SPARTE DirBeteiligtKz="N" PraemieBtoSp="360.00" PraemieNtoSp="300.00" SichergKz="N" SondervereinbarungKz="N" SpartenCd="HH" SpartenErweiterung="K575000" Spartentxt="HAUSHALT" VerbandSparteCd="011"> <EL-Klausel Klauselnr="10B-N"/> <EL-Klausel Klauselnr="981-N"/> <EL-Klausel Klauselnr="W22-N"/> <EL-Klausel Klauselnr="W28-N"/> <EL-Praemienkorrektur PraemKorrArtCd="KR" PraemKorrText="IndivRabatt" PraemKorrWert="26.83"/> <EL-Text TxtArtCd="FRT" TxtInhalt="Glasbruch Luxus"/> <EL-Text TxtArtCd="FRT" TxtInhalt="Haushalt-Versicherung"/> <EL-Text TxtArtCd="FRT" TxtInhalt="IndBlitzschlag privat"/> <EL-Text TxtArtCd="FRT" TxtInhalt="Kinderwagen"/> <EL-Text TxtArtCd="FRT" TxtInhalt="Neuwert für Tapeten"/> <EL-Text TxtArtCd="FRT" TxtInhalt="Neuwertentschädigung"/> <EL-Text TxtArtCd="FRT" TxtInhalt="Umweltstörung"/> <EL-Text TxtArtCd="FRT" TxtInhalt="Vandalismus"/> <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Aquarien, Wasserbett" RisikoLfnr="1"> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="3800.00" VSBez="Aquarien, Wasserbett"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Aufräum-,Reinigungskosten" RisikoLfnr="2"> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="15597.60" VSBez="Aufräum-,Reinigungskosten"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Berechnung mit indSumme" RisikoLfnr="3"> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="155976.00" VSBez="Berechnung mit indSumme"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Hotelkosten" RisikoLfnr="4"> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="7500.00" VSBez="Hotelkosten"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Ind Blitzschlag gewerb" RisikoLfnr="5"> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="3750.00" VSBez="Ind Blitzschlag gewerb"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Katastrophenschutz" RisikoLfnr="6"> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="7500.00" VSBez="Katastrophenschutz"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Kühlbehälterinhalt" RisikoLfnr="7"> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="350.00" VSBez="Kühlbehälterinhalt"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Privat-Haftpflicht" RisikoLfnr="8"> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="1000000.00" VSBez="Privat-Haftpflicht"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Transportmittelunfall" RisikoLfnr="9"> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="3500.00" VSBez="Transportmittelunfall"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Vorsorge" RisikoLfnr="10"> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="15597.60" VSBez="Vorsorge"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Zaun" RisikoLfnr="11"> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="750.00" VSBez="Zaun"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="private Software" RisikoLfnr="12"> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="2200.00" VSBez="private Software"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="HH1" RisikoBez="Ökoschutz" RisikoLfnr="13"> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="15597.60" VSBez="Ökoschutz"/> </RISIKO> </SPARTE> </VERTRAG> <!-- Landwirtschaft --> <VERTRAG AendGrundCd="NEU" AendGrundbez="Neuzugang" BIC="GIBAATWW" DurchfDat="2017-01-01" GueltigBeg="2017-01-01" Hptfaelligkeit="--01-01" IBAN="AT142099999999999999" Polizzennr="XX-L999.999" PraemieBtoVtg="1500.00" PraemieNtoVtg="3000.00" Vermnr="D88888" VertragsID="0261218745" VtgBeg="2017-01-01" VtgEnd="2028-04-01" VtgProdCd="PR" VtgProdukt="Bauer Rundumschutz" VtgSparteCd="BLA" VtgStatusCd="1" WaehrungsCd="EUR" ZahlRhythmCd="2" ZahlWegCd="02"> <EL-Klausel Klauselnr="KUH-N"/> <EL-Klausel Klauselnr="SWN-N"/> <EL-Text TxtArtCd="FRT" TxtInhalt="Bauer Rundumschutz"/> <EL-Text TxtArtCd="FRT" TxtInhalt="Tarif 012017"/> <VERTRAGSPERSON Lfnr="1" Personennr="2918965473@15462572" VtgRolleCd="VN"/> <VERS_OBJEKT ObjLfnr="1" VersObjTxt="Feld im Anbaugebiet 1"> <VERS_SACHE VersSacheCd="16" VersLwCd="04" StatusCd="1" VersSacheBez="Weizenfeld"> <EL-Objektdaten ObjektdatenCd="08" ObjektdatenInfo="Fläche" Wert="10 ha"/> </VERS_SACHE> </VERS_OBJEKT> <VERS_OBJEKT ObjLfnr="2" VersObjTxt="Mähdrescher"> <VERS_SACHE VersSacheCd="04" VersLwCd="05" VersSacheBez="Claas Lexion 750 TT"/> </VERS_OBJEKT> <VERS_OBJEKT ObjLfnr="3" VersObjTxt="Halle"> <VERS_SACHE VersSacheCd="01" GebaeudeArtCd="LN" BauartCd="MA" GebaeudeBez="Maschinenhalle"> <EL-Objektdaten ObjektdatenCd="08" ObjektdatenInfo="Fläche" Wert="300.00 m²"/> <EL-Objektdaten ObjektdatenCd="99" ObjektdatenInfo="Neuwert" Wert="50000.00"/> <EL-Objektdaten ObjektdatenCd="22" ObjektdatenInfo="Mähdrescher" Wert="1"/> </VERS_SACHE> </VERS_OBJEKT> <SPARTE DirBeteiligtKz="N" PraemieBtoSp="282.72" PraemieNtoSp="254.72" SichergKz="N" SondervereinbarungKz="N" SpartenCd="RS" SpartenErweiterung="6565000" Spartentxt="RECHTSSCHUTZ" VerbandSparteCd="079"> <EL-Klausel Klauselnr="03R-N"/> <EL-Klausel Klauselnr="41R-N"/> <EL-Praemienkorrektur PraemKorrArtCd="KR" PraemKorrText="Sonderrabatt" PraemKorrWert="20.00"/> <EL-Text TxtArtCd="FRT" TxtInhalt="Ohne Selbstbehalt"/> <EL-Text TxtArtCd="FRT" TxtInhalt="GRUNDDECKUNG 1 LW Fahrzeug"/> <RISIKO PraemFristCd="J" RisikoArtCd="R01" RisikoBez="Rechtsschutzversicherung" RisikoLfnr="1"> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="62000.00" VSBez="Rechtsschutzversicherung"/> </RISIKO> </SPARTE> <SPARTE DirBeteiligtKz="N" PraemieBtoSp="54.36" PraemieNtoSp="47.28" SichergKz="N" SondervereinbarungKz="N" SpartenCd="FE" SpartenErweiterung="K901000" Spartentxt="FEUER LW" VerbandSparteCd="001"> <EL-Klausel Klauselnr="16P-N"/> <EL-Klausel Klauselnr="31Z-N"/> <EL-Klausel Klauselnr="966-N"/> <EL-Text TxtArtCd="FRT" TxtInhalt="Feuer-Plus"/> <RISIKO PraemFristCd="J" RisikoArtCd="F01" RisikoBez="Bauliche Verbesserungen" RisikoLfnr="1"> <EL-Objekt ObjLfnr="3"/> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="67666.50" VSBez="Bauliche Verbesserungen"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="F01" RisikoBez="Grunddeckung f Gebäude" RisikoLfnr="2"> <EL-Objekt ObjLfnr="3"/> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="40000.00" VSBez="Grunddeckung f. LW Gebäude"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="F01" RisikoBez="Grunddeckung Anbaugebiet" RisikoLfnr="3"> <EL-Objekt ObjLfnr="1"/> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="400000.00" VSBez="Grunddeckung Anbaugebiet"/> </RISIKO> </SPARTE> <SPARTE DirBeteiligtKz="N" PraemieBtoSp="100.72" PraemieNtoSp="80.72" SichergKz="N" SondervereinbarungKz="N" SpartenCd="BU" SpartenErweiterung="LW65000" Spartentxt="BETRIEBSUNTERBRECHUNG" VerbandSparteCd="032"> <EL-Klausel Klauselnr="AAB-N"/> <EL-Klausel Klauselnr="BB1-N"/> <EL-Praemienkorrektur PraemKorrArtCd="KR" PraemKorrText="Sonderrabatt" PraemKorrWert="10.00"/> <EL-Text TxtArtCd="FRT" TxtInhalt="Ohne Selbstbehalt"/> <RISIKO PraemFristCd="J" RisikoArtCd="R01" RisikoBez="BU Sicher ist sicher" RisikoLfnr="1"> <EL-Objekt ObjLfnr="2"/> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="1000000.00" VSBez="BU Sicher ist sicher"/> </RISIKO> </SPARTE> </VERTRAG> <!-- Unfall --> <VERTRAG AendGrundCd="999" AendGrundbez="Vertragsverlängerung" BIC="OPSKATWW" DurchfDat="2017-04-03" GueltigBeg="2017-04-03" Hptfaelligkeit="--09-01" IBAN="AT406099999999999999" Polizzennr="YY-U888.888" PraemieBtoVtg="40.00" PraemieNtoVtg="384.00" Vermnr="D99999" VertragsID="0574558448" VtgBeg="1994-07-01" VtgEnd="2015-09-01" VtgProdCd="UF" VtgProdukt="Unfall Superschutz" VtgSparteCd="UV" VtgStatusCd="1" WaehrungsCd="EUR" ZahlRhythmCd="6" ZahlWegCd="02"> <EL-Klausel Klauselnr="R09-N"/> <VERTRAGSPERSON Lfnr="1" Personennr="2918072343@11435234" VtgRolleCd="VN"/> <VERS_OBJEKT ObjLfnr="1"> <VERS_PERSON Personennr="2918072343@11435234"/> <EL-Text TxtArtCd="BER" TxtInhalt="Beruf: Hochbautechniker"/> </VERS_OBJEKT> <VERS_OBJEKT ObjLfnr="2"> <VERS_PERSON Personennr="2918072344@11435237"/> <EL-Text TxtArtCd="BER" TxtInhalt="Beruf: Apothekerin"/> </VERS_OBJEKT> <VERS_OBJEKT ObjLfnr="3"> <VERS_PERSON Personennr="2918072345@11435242"/> <EL-Text TxtArtCd="BER" TxtInhalt="Beruf: Schüler"/> </VERS_OBJEKT> <VERS_OBJEKT ObjLfnr="4"> <VERS_PERSON Personennr="2918072346@11435245"/> <EL-Text TxtArtCd="BER" TxtInhalt="Beruf: Kind"/> </VERS_OBJEKT> <SPARTE DirBeteiligtKz="N" PraemieBtoSp="400.00" PraemieNtoSp="384.00" SichergKz="N" SondervereinbarungKz="N" SpartenCd="UV" SpartenErweiterung="UV1000" Spartentxt="Unfallversicherung" VerbandSparteCd="051"> <EL-Klausel Klauselnr="24B-N"/> <EL-Klausel Klauselnr="28B-N"/> <EL-Klausel Klauselnr="37B-N"/> <EL-Klausel Klauselnr="Z86-N"/> <EL-Klausel Klauselnr="Z87-N"/> <EL-Praemienkorrektur PraemKorrArtCd="KR" PraemKorrText="IndivRabatt" PraemKorrWert="20.01"/> <RISIKO PraemFristCd="J" RisikoArtCd="U01" RisikoBez="Unfallkosten" RisikoLfnr="1"> <EL-Objekt ObjLfnr="1"/> <EL-Objekt ObjLfnr="2"/> <EL-Objekt ObjLfnr="3"/> <EL-Objekt ObjLfnr="4"/> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="2317.00" VSBez="Unfallkosten"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="U01" RisikoBez="Kosmetische Operation" RisikoLfnr="2"> <EL-Objekt ObjLfnr="1"/> <EL-Objekt ObjLfnr="2"/> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="15399.00" VSBez="Kosmetische Operation"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="U01" RisikoBez="Spitalgeld" RisikoLfnr="3"> <EL-Objekt ObjLfnr="1"/> <EL-Objekt ObjLfnr="2"/> <EL-Objekt ObjLfnr="3"/> <EL-Objekt ObjLfnr="4"/> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="47.10" VSBez="Spitalgeld"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="U01" RisikoBez="Genesungsgeld" RisikoLfnr="4"> <EL-Objekt ObjLfnr="1"/> <EL-Objekt ObjLfnr="2"/> <EL-Objekt ObjLfnr="3"/> <EL-Objekt ObjLfnr="4"/> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="47.10" VSBez="Genesungsgeld"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="U01" RisikoBez="Dauernde Invalidität" RisikoLfnr="5"> <EL-Objekt ObjLfnr="1"/> <EL-Objekt ObjLfnr="2"/> <EL-Objekt ObjLfnr="3"/> <EL-Objekt ObjLfnr="4"/> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="92371.00" VSBez="Dauernde Invalidität"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="U01" RisikoBez="Unfalltod" RisikoLfnr="6"> <EL-Objekt ObjLfnr="1"/> <EL-Objekt ObjLfnr="2"/> <EL-Objekt ObjLfnr="3"/> <EL-Objekt ObjLfnr="4"/> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="15399.00" VSBez="Unfalltod"/> </RISIKO> <RISIKO PraemFristCd="J" RisikoArtCd="U01" RisikoBez="Kinderspitalgeld" RisikoLfnr="7"> <EL-Objekt ObjLfnr="3"/> <EL-Objekt ObjLfnr="4"/> <EL-Versicherungssumme VSArtCd="EVS" VSBetrag="450.00" VSBez="Kinderspitalgeld"/> </RISIKO> </SPARTE> </VERTRAG> <!-- Krankenversicherung --> <VERTRAG AendGrundCd="TAA" AendGrundbez="Tarifanpassung" DurchfDat="2016-12-13" GueltigBeg="2017-01-01" Hptfaelligkeit="--03-01" Polizzennr="2032019351" PraemieBtoVtg="1265.97" PraemieNtoVtg="1292.59" Vermnr="D99999" VertragsID="2032019351K" VtgBeg="2012-03-01" VtgEnd="2999-12-31" VtgProdCd="KE" VtgProdukt="Krankenversicherung" VtgSparteCd="KV" VtgStatusCd="1" WaehrungsCd="EUR" ZahlRhythmCd="1" ZahlWegCd="01"> <EL-Polizzennummer PolArtCd="X" PolNr="KV-D000.01"/> <VERTRAGSPERSON Lfnr="1" Personennr="2918072343@11435234" VtgRolleCd="VN"/> <VERTRAGSPERSON Lfnr="2" Personennr="2918072343@11435234" VtgRolleCd="IA"/> <VERS_OBJEKT ObjLfnr="1"> <VERS_PERSON Personennr="2918072343@11435234"/> <EL-Text TxtArtCd="BER" TxtInhalt="Beruf: Hochbautechniker"/> </VERS_OBJEKT> <SPARTE PraemieBtoSp="1265.97" PraemieNtoSp="1292.59" SpartenCd="KE" SpartenErweiterung="LL000000" Spartentxt="Ambulant" VerbandSparteCd="300"> <EL-Klausel Klauselnr="53.DK0CA"/> <EL-Praemienkorrektur PraemKorrArtCd="UZ" PraemKorrWert="-39.15"/> <EL-Zeitraum ZRArtCd="9" ZRBeg="2012-03-01" ZREnd="2998-03-22"/> <RISIKO PraemFristCd="J" PraemieNto="1292.59" RisikoArtCd="K02" RisikoBez="Ambulanz" RisikoLfnr="1"> <EL-Objekt ObjLfnr="1"/> <EL-Zeitraum ZRArtCd="9" ZRBeg="2013-01-01" ZREnd="9999-12-31"/> </RISIKO> </SPARTE> </VERTRAG> <!-- Lebensversicherung --> <VERTRAG AendGrundCd="STV" AendGrundbez="Totalstorno" BIC="BKAUATWW" DurchfDat="2015-09-30" GueltigBeg="2015-10-01" Hptfaelligkeit="--11-01" IBAN="AT369999999999999999" Polizzennr="2300356024" PraemieBtoVtg="40.00" PraemieNtoVtg="400.00" Vermnr="D99999" VertragsID="2300356024L" VtgBeg="2012-11-01" VtgEnd="2030-11-01" VtgProdCd="LE" VtgProdukt="Kindervorsorge" VtgSparteCd="LV" VtgStatusCd="9" WaehrungsCd="EUR" ZahlRhythmCd="6" ZahlWegCd="02"> <EL-Bezugsberechtigung BBArtCd="ERL" BBTxt="Versicherungsnehmer"/> <EL-Bezugsberechtigung BBArtCd="ABL" BBTxt="Die gesetzlichen Erben"/> <VERTRAGSPERSON Lfnr="1" Personennr="2918072343@11435234" VtgRolleCd="VN"/> <VERTRAGSPERSON Lfnr="2" Personennr="2918072343@11435234" VtgRolleCd="IA"/> <VERS_OBJEKT ObjLfnr="1"> <VERS_PERSON Personennr="2918072343@11435234"/> </VERS_OBJEKT> <SPARTE PraemieBtoSp="360.00" PraemieNtoSp="400.00" SpartenCd="LV" SpartenErweiterung="YQJ40000" Spartentxt="YoungStarGarant" VerbandSparteCd="200"> <EL-Anzahl Bezeichnung="Versicherungsdauer" Wert="18.00"/> <EL-Klausel Klauselnr="700-L"/> <EL-Klausel Klauselnr="701-L"/> <EL-Praemienkorrektur PraemKorrArtCd="UZ" PraemKorrWert="13.32"/> <EL-Zeitraum ZRArtCd="9" ZRBeg="2012-11-01" ZREnd="2015-10-01"/> <RISIKO PraemFristCd="J" PraemieNto="400.00" RisikoArtCd="L03" RisikoBez="Erlebensversicherung mit Prämienrückgewähr" RisikoLfnr="1"> <EL-Objekt ObjLfnr="1"/> <EL-Versicherungssumme VSArtCd="ELS" VSBetrag="6000.00" VSBez="Erlebensfallsumme"/> <EL-Zeitraum ZRArtCd="9" ZRBeg="2012-11-01" ZREnd="2030-11-01"/> </RISIKO> </SPARTE> </VERTRAG> <!-- Schaden --> <SCHADEN BearbStandCd="E" Ereigniszpkt="2015-05-07T00:00:00.000" ErledDat="2015-05-07" MalusWirksamKz="J" Meldedat="2015-05-07" Polizzennr="XX-I000.123" SachbearbVU="Sachbearbeiter Michael" SchadUrsCd="601" SchadUrsTxt="Kollision mit bekanntem Fzg." Schadennr="2803235778" SpartenCd="AKV" SpartenErweiterung="AK00000" Vermnr="M99999" VerschuldenCd="U" WaehrungsCd="EUR"> <SCHADEN_BETEILIGTER BetLfnr="1" BetRolleCd="AS" BetTxt="Vornam Famnam"/> <SCHADEN_BETEILIGTER BetLfnr="2" BetRolleCd="ZE" BetTxt="ZENTRALE der Gutachter"> <ZAHLUNG WaehrungsCd="EUR" ZahlBetrag="103.50" ZahlDat="2015-07-09" ZahlGrundCd="99" ZahlWegCd="99" ZahlungsLfnr="1"/> </SCHADEN_BETEILIGTER> <SCHADEN_BETEILIGTER BetLfnr="3" BetRolleCd="ZE" BetTxt="Werkstatt KFZ GmbH"> <ZAHLUNG BIC="R8945122140" IBAN="AT145221455645444444" WaehrungsCd="EUR" ZahlBetrag="575.15" ZahlDat="2015-06-08" ZahlGrundCd="99" ZahlWegCd="12" ZahlungsLfnr="1"/> </SCHADEN_BETEILIGTER> </SCHADEN> </PAKET> </OMDS>
Falls mir wer einen Hinweis oder Tipp geben könnte - Danke
-
Wer foult da? Das gibt mindestens eine gelbe Karte.
Du meinst wohl "fault".Mit
buftext[size+1] = '\0';
greifst du auf nicht-reservierten Speicher zu. Du benötigst wohl eher
int len = fread(buftext,size,1,file); buftext[len] = '\0';
Und gleiches bei
if (ibuf == size+1) break;
Sollte
if (ibuf == size) // bzw. besser >= (oder sogar >= len) break;
sein.
PS:
malloc(size+1 * sizeof(char))
kannst du zumalloc(size+1)
verkürzen (dasizeof(char)
immer 1 ist).
-
Danke für die Infos werd ich korrigieren.
Beim debuggen schlägt er aber in Zeile 65 an:while (buftext[ibuf] != ' ')
-
@WienMax sagte in Segmentation foult nur beim Debuggen ???:
Beim debuggen schlägt er aber in Zeile 65 an:
while (buftext[ibuf] != ' ')Welchen Wert hat denn ibuf an der Stelle?
Und ist der kleiner als size?
-
@DirkB ibuf 24655 size 24749
-
Was mir gerade noch aufgefallen ist:
// Zeile 45 bei dir if (buftext[ibuf] != '>' || (buftext[ibuf] != '/' && buftext[ibuf+1] != '>')) // > oder />
Hast du dort
||
und&&
vertauscht?Bist du generell mal mit dem Debugger im Einzelschritt durch den Code gegangen, um zu sehen, ob die XML-Tags richtig durchlaufen werden?
PS: Ist das eine Hausaufgabe? Weil sonst wäre es wohl besser, du würdest eine XML-Parser Library benutzen, z.B. Expat XML parser.
-
@DirkB sagte in Segmentation foult nur beim Debuggen ???:
@WienMax sagte in Segmentation foult nur beim Debuggen ???:
Beim debuggen schlägt er aber in Zeile 65 an:
while (buftext[ibuf] != ' ')Welchen Wert hat denn ibuf an der Stelle?
Und ist der kleiner als size?Das wäre komisch. Bist du ganz sicher?
-
@hustbaer oben ist ein link zum Screenshot.
-
OK. Also entweder stimmen die Werte die VS Code da anzeigt nicht, oder du hast dir den Stack zerschossen. Ich meine, guck mal was da für
text
undbuftext
angezeigt wird.
-
@Th69 sagte in Segmentation foult nur beim Debuggen ???:
PS: malloc(size+1 * sizeof(char)) kannst du zu malloc(size+1)verkürzen (da sizeof(char) immer 1 ist).
Wenn das für einen Typ gemacht wird, bei dem sizeof() > 1 ergibt, kommt auch Müll raus, da Punkt vor Strichrechnung gilt.
-
@WienMax sagte in Segmentation foult nur beim Debuggen ???:
FILE *file; ... printf("Konnte Datei %s nicht öffnen", file); // Gehört noch ausgebessert da file bei Fehler null ist!
Der Formatspecifier %s ist nicht für eine FILE-Struktur da.
Schalte den Warnlevel vom Compiler auf Maximum und beseitige dann alle Warnungen. Ein cast ist dabei nicht das Mittel der Wahl.
@WienMax sagte in Segmentation foult nur beim Debuggen ???:
while (buftext[ibuf] != '>') nodenameende[i++] = buftext[ibuf++]; // Nodename Ende
Bei solchen Aktionen sollte das i auch mal überprüft werden, damit es nicht zu groß wird- und wenn es zu groß wird muss es auch behandelt werden.
-
@Th69 sagte in Segmentation foult nur beim Debuggen ???:
int len = fread(buftext,size,1,file);
Damit habe ich dann in len den Wert 0 was aber nicht gewollt ist.
fread returns the number of full items actually read, which may be less than count
-
OK, sollte dann
int len = fread(buftext,1,size,file); // size und 1 vertauscht buftext[len] = '\0';
sein.
PS: Statt der
1
könnte man auchsizeof(char)
schreiben.
-
@Th69 sagte in Segmentation foult nur beim Debuggen ???:
OK, sollte dann
int len = fread(buftext,1,size,file); // size und 1 vertauscht buftext[len] = '\0';
sein.
PS: Statt der
1
könnte man auchsizeof(char)
schreiben.Danke jetzt läuft das Programm so wie es soll und nicht über das Ende hinaus.
Tatsächlich ist ein Unterschied bei size: 24794 und len: 24417
-
Dies wird an den Zeilenumbrüchen liegen. Im Textmodus (unter Windows) wird
\r\n
als\n
gelesen (und damit istlen < size
).
Wenn du die Originalzeilenumbrüche erhalten willst, dann lese binär:"rb"
(hier aber nicht zu empfehlen)
-
@Th69 ja liegt eindeutig an den Zeilenumbrüchen.