Problem beim speichern von mehreren Textfiles
-
Ein freundliches Hallo an Alle,
Ich will ein Programm schreiben das 6 Methoden hat 3 davon sollen bei Aufruf eine Textfile schreiben und darin sollen mehrere Attribute gespeichert werden.
Die anderen 3 Methoden sollen die Attribute lesen.Nun zu meinem Problem die Write-Methoden sollen aber bei jedem Aufruf unter einem speziellen Namen gespeichert werden, da aber die Funktion fopen als erstes ein konstanten String haben will und da ist das problem er meckert immer wenn ich im einen String übergeben will der aber verändert werden kann.
void Einheit::writevirus(char*typ,char*name, char*bildname, byte*dna,byte angriff, byte verteidigung, byte staerke, byte intelligenz, byte schnelligkeit, byte optik, byte krankheit, byte spezialfaehigkeit, byte anzahl, byte transport ){ pFile = fopen (name, "w+" ); fputs(Typ,pFile); fputs(typ,pFile); fprintf(pFile,"\n"); fputs(Name,pFile); fputs(name,pFile); fprintf(pFile,"\n"); fputs(Bildname,pFile);fputs(bildname,pFile);fprintf(pFile,"\n"); fputs(DNA,pFile); char DNA_text[10]; sprintf( DNA_text, "%d", dna ); fputs(DNA_text,pFile); fprintf(pFile,"\n"); fputs(Angriff,pFile); char angriff_text[10]; sprintf( angriff_text, "%d", angriff ); fputs(angriff_text,pFile); fprintf(pFile,"\n"); fputs(Verteidigung,pFile); char verteidigung_text[10]; sprintf( verteidigung_text, "%d", verteidigung ); fputs(verteidigung_text,pFile); fprintf(pFile,"\n"); fputs(Staerke,pFile); char Staerke_text[10]; sprintf( Staerke_text, "%d", staerke ); fputs(Staerke_text,pFile); fprintf(pFile,"\n"); fputs(Intelligenz,pFile); char intelligenz_text[10]; sprintf( intelligenz_text, "%d", intelligenz ); fputs(intelligenz_text,pFile); fprintf(pFile,"\n"); fputs(Schnelligkeit,pFile); char Schnelligkeit_text[10]; sprintf(Schnelligkeit_text, "%d", schnelligkeit ); fputs(Schnelligkeit_text,pFile); fprintf(pFile,"\n"); fputs(Optik,pFile); char Optik_text[10]; sprintf( Optik_text, "%d", optik ); fputs(Optik_text,pFile); fprintf(pFile,"\n"); fputs(Krankheit,pFile); char Krankheit_text[10]; sprintf( Krankheit_text, "%d", krankheit ); fputs(Krankheit_text,pFile); fprintf(pFile,"\n"); fputs(Spezialfaehigkeit,pFile); char Spezialfaehigkeit_text[10]; sprintf(Spezialfaehigkeit_text, "%d", spezialfaehigkeit ); fputs(Spezialfaehigkeit_text,pFile); fprintf(pFile,"\n"); fputs(Anzahl,pFile); char Anzahl_text[10]; sprintf( Anzahl_text, "%d", anzahl ); fputs(Anzahl_text,pFile); fprintf(pFile,"\n"); fputs(Transport,pFile); char Transport_text[10]; sprintf( Transport_text, "%d", transport ); fputs(Transport_text,pFile); fprintf(pFile,"\n"); fclose (pFile); // Ende der Virus.unit }Meine Erste Idee war einfach einen Hilfsstring zu deklarieren dies ging aber nicht.
void Einheit::writevirus(char*typ,char*name, char*bildname, byte*dna,byte angriff, byte verteidigung, byte staerke, byte intelligenz, byte schnelligkeit, byte optik, byte krankheit, byte spezialfaehigkeit, byte anzahl, byte transport ){ string s1; s1+=name; s1+="virus.unit" pFile = fopen ("virus.unit", "w+" ); fputs(Typ,pFile); fputs(typ,pFile); fprintf(pFile,"\n"); fputs(Name,pFile); fputs(name,pFile); fprintf(pFile,"\n"); fputs(Bildname,pFile);fputs(bildname,pFile);fprintf(pFile,"\n"); fputs(DNA,pFile); char DNA_text[10]; sprintf( DNA_text, "%d", dna ); fputs(DNA_text,pFile); fprintf(pFile,"\n"); fputs(Angriff,pFile); char angriff_text[10]; sprintf( angriff_text, "%d", angriff ); fputs(angriff_text,pFile); fprintf(pFile,"\n"); fputs(Verteidigung,pFile); char verteidigung_text[10]; sprintf( verteidigung_text, "%d", verteidigung ); fputs(verteidigung_text,pFile); fprintf(pFile,"\n"); fputs(Staerke,pFile); char Staerke_text[10]; sprintf( Staerke_text, "%d", staerke ); fputs(Staerke_text,pFile); fprintf(pFile,"\n"); fputs(Intelligenz,pFile); char intelligenz_text[10]; sprintf( intelligenz_text, "%d", intelligenz ); fputs(intelligenz_text,pFile); fprintf(pFile,"\n"); fputs(Schnelligkeit,pFile); char Schnelligkeit_text[10]; sprintf(Schnelligkeit_text, "%d", schnelligkeit ); fputs(Schnelligkeit_text,pFile); fprintf(pFile,"\n"); fputs(Optik,pFile); char Optik_text[10]; sprintf( Optik_text, "%d", optik ); fputs(Optik_text,pFile); fprintf(pFile,"\n"); fputs(Krankheit,pFile); char Krankheit_text[10]; sprintf( Krankheit_text, "%d", krankheit ); fputs(Krankheit_text,pFile); fprintf(pFile,"\n"); fputs(Spezialfaehigkeit,pFile); char Spezialfaehigkeit_text[10]; sprintf(Spezialfaehigkeit_text, "%d", spezialfaehigkeit ); fputs(Spezialfaehigkeit_text,pFile); fprintf(pFile,"\n"); fputs(Anzahl,pFile); char Anzahl_text[10]; sprintf( Anzahl_text, "%d", anzahl ); fputs(Anzahl_text,pFile); fprintf(pFile,"\n"); fputs(Transport,pFile); char Transport_text[10]; sprintf( Transport_text, "%d", transport ); fputs(Transport_text,pFile); fprintf(pFile,"\n"); fclose (pFile); // Ende der Virus.unit }Wenn ich das Programm mit dem Quellcode compiliere, startet kurz das Programm und kratzt dann ab.
Ich wäre für jede Idee wie ich das Problem lösen kann dankbar.
Mfg Daedalus21
-
daedalus21 schrieb:
Ich will ein Programm schreiben...
Wie wäre es im ersten Schritt wenn du auch C++ verwenden würdest?
(Sprich: Für Ein- und Ausgabe cout/cin, fstream; std::string für Strings...)cu André
P.S: Zudem würde der Code auch lesbarer wenn du statt den code-Tags die C/C++-Tags verwenden würdest...
P.P.S: Welcher Typ ist bitte schön byte?
-
1. Das ist nur eine Methode aus dem Programm.
2. byte ist ein vorher vordefinierter unsigned char
Das Problem liegt in Zeile 3 pFile=fopen(name,"w+");
der compiler hat eine Problem damit das die variable name kein const char ist.
-
Ja. Ist es nicht. Und was macht man da? - Man macht ein const char draus..

void Einheit::writevirus(char*typ,const char*name, char*bil...Wahrscheinlich gibt es diesen Fehler auch noch wo anderst, aber jetzt solltest du fähig sein das auch selbst hinzubekommen..
-
Danke für eure Hilfe das war wiklich nen dummer Fehler, aber wenn man den ganzen Tag vor Quellcode sitzt sieht man sowas schon nicht mehr.
Mfg Daedalus21
-
daedalus21 schrieb:
Danke für eure Hilfe das war wiklich nen dummer Fehler, aber wenn man den ganzen Tag vor Quellcode sitzt sieht man sowas schon nicht mehr.
Mfg Daedalus21
Dann hättest du aber mal die Fehlermeldung lesen können..
