Netzer82 Geschrieben 15. März 2002 Teilen Geschrieben 15. März 2002 Hi Leute, ich möchte in einem Programm den Inhalt eines Arrays und einer Variablen dauerhaft speichern und später auch wieder Vergleichen können. Es sollen mehrere "Dateien" davon gespeichert werden.:confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 15. März 2002 Teilen Geschrieben 15. März 2002 Das was DU schreibst ist nicht konkret genug. Poste doch mal ein bisschen Quelltext und erkläre mal genauer was Du damit denn anstellen willst. Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Netzer82 Geschrieben 15. März 2002 Autor Teilen Geschrieben 15. März 2002 Also hier der Code: int kilometer = 0; char stadt [100]; float endpreis, multi = 0.30; //kilometer = 0; //multi = 0.30; cout<< "Herzlich Willkommen zu SRoute 0.01\n"; //Begruessung cout<< "Bitte geben sie den Spielort ein:\n"; //Eingabeaufforderung cin>> stadt; //Eingabe Spielort cout<< " Bitte geben sie die Entfernung von ihrer Heimat nach " <<stadt<< " ein: \t"; cin>> kilometer; endpreis = (kilometer * 2) * multi; cout<< " Die Fahrtkosten betragen: " <<endpreis<< " EURO !"; } Was ich jetzt machen will den Spielort (also Array 'stadt') und Kilometerkosten (endpreis) dauerhaft speichern und vergleichen. Das heißt, dass wenn ich eine neue Eintragung mache erst die gespeicherten Daten mit den eingebenen Verglichen werden. Hoffe das ist konkreter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Poldi Geschrieben 15. März 2002 Teilen Geschrieben 15. März 2002 definier die teile global, dann hast du den inhalt während der gesamten programmlaufzeit. oder meinst du noch dauerhafter? dann schreib den inhalt der arrays in einem selbsterdachten format in eine textdate und lies dies zu beginn des programmes ein. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 15. März 2002 Teilen Geschrieben 15. März 2002 Ja, so würde ich das auch machen. Wenn Du das Programm sozusagen vor jedem Spiel starten willst, um zu schauen was Dich diesmal die Fahrt dorhin kostet und wie der Unterschied ist, dann solltest Du die Daten in eine Datei schreiben. Das z.B. so aussehen: Köln 50km 30Euro DOrtmund 30km 18Euro Leverkusen 45km 27Euro Dann kannst Du am Anfang Deines Programms die einzelnen Daten (namen etc.) in ein mehrdimensionales Array lesen und dann vergleichen. Wie genau musst Du mal autüfteln, und wenn Du nicht weiter kommst, dann meld Dich nochmal. Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Netzer82 Geschrieben 15. März 2002 Autor Teilen Geschrieben 15. März 2002 @Poldi Kannst du mir vielleicht den Befehl verraten, wie ich den Array in einer Datei speichere ? Also in VB6 haißt der so ungefähr 'SaveAs'. @Woodstock Ich will das nicht vergleichen, sondern ich will die Stadt (Spielort) einmal eingeben. Wenn ich nochmal den Namen einegeben will, soll mir das Programm zurückgeben, dass ich schon einmal dort war und dass es XX kilometer bis dahin sind. Dann soll angezeigt werden, wieviel Kilometer es sind. Dann kommt nochwas, aber das kann ich selber. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
maxim_42 Geschrieben 15. März 2002 Teilen Geschrieben 15. März 2002 Etwa so? #include <iostream> #include <string> using namespace std; // erspart std::cout man kann statt dessen // einfach cout schreiben. struct Eintraege{ int entfernung; string name; }; #define MAX_ANZAHL_EINTRAEGE 100 int main(){ int index=0; bool found; int dummy; string strDummy; Eintraege myEintraege[MAX_ANZAHL_EINTRAEGE]; do{ found =false; cout<<"Ihr Reiseziel?\nAbrruch mit X<RETURN>\n"; cin>>strDummy; if(strDummy== "X") return 0; for(int i=0; i<index; i++){ if(myEintraege.name == strDummy) { cout<<"Entfernung: "<< myEintraege.entfernung<<endl; found= true; break; } } if(!found){ cout<<"Entfernung angeben:\n"; cin>> myEintraege[index].entfernung; myEintraege[index++].name= strDummy; } }while(index< MAX_ANZAHL_EINTRAEGE); return 1; } Das lässt sich in C++ mit den Standartkontainern auch eleganter machen. Statt Eintraege als Struct zu implementieren kann man auch eine Klasse schreiben und eine Instanz erteugen wenn ein Eintrag nicht gefunden wurde. Da das ganze aber wie eine Aufgabe aussieht ist diese Lösung eher C-orientiert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 15. März 2002 Teilen Geschrieben 15. März 2002 fread, fwrite... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 15. März 2002 Teilen Geschrieben 15. März 2002 Gut, nur woher sollte ich das wissen? Um etwas in eine Datei zu schreiben benutze ich meistens fwrite. Dafür muss die Datei vorher mit fopen geöffnet werden und danach wieder mit fclose geschlossen werden. Es gibt dafür aber auch noch andere Befehle. Gut, wenn es nur das ist was Du willst, dann schreibe Dir genau das in die Datei was ich vorher auch schon geschrieben habe. Dann läßt DU den User des Programm (ob nun Du oder wer anders) die Stadt eingeben. Jetzt liest Du Zeilenweise aus der Datei aus, in dieDu die Städte geschrieben hast (dazu solltest Du fegts benutzen), schaust mit strstr ob die Eingabe des Users in der Zeile schon mal vorkam. Ist das so, bist Du die Zeile aus. Kam die Stadt noch nicht vor (ist der Vergleich bis zum Ende der Datei immer fehlegschlagen) läßt DU den User die Kilometer eingeben, errechnest die Kosten und schreibst das ganze ans Ende der Datei. Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Netzer82 Geschrieben 15. März 2002 Autor Teilen Geschrieben 15. März 2002 Danke Woodstock bringt mich schon weietr aber eine Frage habe ich noch ??? Weißt du zufällig wie der fgets Befehl in C++ heißt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gugelhupf Geschrieben 15. März 2002 Teilen Geschrieben 15. März 2002 fgets, fgetws Get a string from a stream. char *fgets( char *string, int n, FILE *stream ); wchar_t *fgetws( wchar_t *string, int n, FILE *stream ); Function Required Header Compatibility fgets <stdio.h> ANSI, Win 95, Win NT fgetws <stdio.h> or <wchar.h> ANSI, Win 95, Win NT For additional compatibility information, see Compatibility in the Introduction. Libraries LIBC.LIB Single thread static library, retail version LIBCMT.LIB Multithread static library, retail version MSVCRT.LIB Import library for MSVCRT.DLL, retail version Return Value Each of these functions returns string. NULL is returned to indicate an error or an end-of-file condition. Use feof or ferror to determine whether an error occurred. Parameters string Storage location for data n Maximum number of characters to read stream Pointer to FILE structure Remarks The fgets function reads a string from the input stream argument and stores it in string. fgets reads characters from the current stream position to and including the first newline character, to the end of the stream, or until the number of characters read is equal to n – 1, whichever comes first. The result stored in string is appended with a null character. The newline character, if read, is included in the string. fgets is similar to the gets function; however, gets replaces the newline character with NULL. fgetws is a wide-character version of fgets. fgetws reads the wide-character argument string as a multibyte-character string or a wide-character string according to whether stream is opened in text mode or binary mode, respectively. For more information about using text and binary modes in Unicode and multibyte stream-I/O, see Text and Binary Mode File I/O and Unicode Stream I/O in Text and Binary Modes. Generic-Text Routine Mappings TCHAR.H Routine _UNICODE & _MBCS Not Defined _MBCS Defined _UNICODE Defined _fgetts fgets fgets fgetws Example /* FGETS.C: This program uses fgets to display * a line from a file on the screen. */ #include <stdio.h> void main( void ) { FILE *stream; char line[100]; if( (stream = fopen( "fgets.c", "r" )) != NULL ) { if( fgets( line, 100, stream ) == NULL) printf( "fgets error\n" ); else printf( "%s", line); fclose( stream ); } } Output /* FGETS.C: This program uses fgets to display Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 15. März 2002 Teilen Geschrieben 15. März 2002 Der Befehl fegts ist aus C++. Wie Du ihn benutzt hat Gugel schon gepostet. Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.