Zum Inhalt springen

Arrays und Variablen dauerhaft speichern


Empfohlene Beiträge

Geschrieben

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:

Geschrieben

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

Geschrieben

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.

Geschrieben

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

Geschrieben

@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.

Geschrieben

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.

Geschrieben

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

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...