Zerstoerer
Lieutenant
- Registriert
- Okt. 2010
- Beiträge
- 686
Guten Abend zusammen,
ich bin gerade dabei eine kleine Funktion in C zu schreiben, die mehrere Dateien im CSV-Format einliest, und den Inhalt in eine XML Datei kopiert, bzw. auf die Verzeichnisstruktur anpasst. Nun habe ich den Code in Dev C++ geschrieben, und wollte ihn zwecks Zusammenführung zu Visual Studio exportieren.
In Dev C++ konnte ich den Code noch problemlos kompilieren, in Visual Studio erscheint leider ein Assertion Failed Error. Kann damit jemand was anfangen, bzw einen Fehler in meinem Code finden?
Ich gebe meiner Funktion als Parameter ein dynamisches Array mit, das IDs für die zu öffnenden Dateien enthält. Damit kann ich auf existierende Dateien zugreifen bzw. mir den Namen herleiten. Der Integer anzahl beschreibt die Menge der gespeicherten IDs. Bisher läuft meine Funktion problemlos bis Zeile 23, dort crasht dann der Code.
Kann mir hier jemand helfen den Fehler zu finden und erklären, warum ich in der einen IDE den Code erfolgreich kompilieren kann, in der anderen jedoch nicht?
Wäre dankbar für ein paar Tipps.
ich bin gerade dabei eine kleine Funktion in C zu schreiben, die mehrere Dateien im CSV-Format einliest, und den Inhalt in eine XML Datei kopiert, bzw. auf die Verzeichnisstruktur anpasst. Nun habe ich den Code in Dev C++ geschrieben, und wollte ihn zwecks Zusammenführung zu Visual Studio exportieren.
In Dev C++ konnte ich den Code noch problemlos kompilieren, in Visual Studio erscheint leider ein Assertion Failed Error. Kann damit jemand was anfangen, bzw einen Fehler in meinem Code finden?
Code:
void einlesen(int anzahl, int idmeldung[]) {
int i;
FILE *xmlfile;
char *xmlpath = (char*)calloc(1000, sizeof(char));
char* fileid = (char*)calloc(1000, sizeof(char));
char *pfad = calloc(1000, sizeof(char));
char **paths = (char**)calloc(sizeof(idmeldung)+1, sizeof(char));
for (i = 0; i <= sizeof(idmeldung); i++) {
paths[i] = (char*)calloc(1000, sizeof(char));
}
for (i = 0; i <= sizeof(idmeldung); i++) {
sprintf(fileid, "%d", idmeldung[i]);
sprintf(pfad, "notifications\\Nachricht %d.csv", idmeldung[i]);
strcpy(paths[i],pfad);
}
i = 1;
sprintf(xmlpath,"nachricht\\Nachricht %d.xml",i);
while(fopen(xmlpath,"r") != 0) {
i++;
sprintf(xmlpath,"nachricht\\Nachricht %d.xml",i);
}
xmlfile = fopen(xmlpath,"w");
fprintf(xmlfile,"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n");
fprintf(xmlfile,"<zeitungen>\n");
for(i = 0; i <= sizeof(idmeldung);i++) {
char *temp = (char*)calloc(1000, sizeof(char));
int j = 0;
FILE *filetemp = fopen(paths[i],"r");
fgets(temp,50000,filetemp);
fgets(temp,50000,filetemp);
fprintf(xmlfile,temp);
fgets(temp,50000,filetemp);
fprintf(xmlfile,temp);
fgets(temp,50000,filetemp);
fprintf(xmlfile,temp);
fgets(temp,50000,filetemp);
fprintf(xmlfile,temp);
fgets(temp,50000,filetemp);
fprintf(xmlfile,temp);
fgets(temp,50000,filetemp);
fprintf(xmlfile,temp);
fgets(temp,50000,filetemp);
fprintf(xmlfile,temp);
fgets(temp,50000,filetemp);
fprintf(xmlfile,temp);
fgets(temp,50000,filetemp);
fprintf(xmlfile,temp);
fclose(filetemp);
}
fprintf(xmlfile,"</zeitungen>\n");
fclose(xmlfile);
}
Ich gebe meiner Funktion als Parameter ein dynamisches Array mit, das IDs für die zu öffnenden Dateien enthält. Damit kann ich auf existierende Dateien zugreifen bzw. mir den Namen herleiten. Der Integer anzahl beschreibt die Menge der gespeicherten IDs. Bisher läuft meine Funktion problemlos bis Zeile 23, dort crasht dann der Code.
Kann mir hier jemand helfen den Fehler zu finden und erklären, warum ich in der einen IDE den Code erfolgreich kompilieren kann, in der anderen jedoch nicht?
Wäre dankbar für ein paar Tipps.