"We are back" « oc.at

c++ probs mit zeigern!

LakeBodom 01.10.2002 - 14:05 2868 39
Posts

Bodominjaervi

OC Addicted
Registered: Jul 2002
Location: AT
Posts: 7808
Scho langsam dreh i ur durch. :bash: Immer Exception Handling, egal ob ich bei der Eingabe *, & oder nix verwend. Vielleicht könnts ihr einen Fehler finden.

Code:

FILE *stream;
char *auswahl = NULL;
char *datei = NULL;
cout << "Assoziatives Array" << endl;
cout << "------------------" << endl;
cout << "Datei eingeben: (Bei Enter test.txt)" << endl;
cin >> *auswahl;
strcpy(datei, "'");
strcat(datei,auswahl);
strcat(datei,"'");
if((stream=fopen(datei,"a+")) == NULL)
{
cout << "NULL";
}
else
{
cout << "NICHT NULL";
}

Plz hlp
:(

FMFlash

tranceCoder
Avatar
Registered: Mar 2001
Location: Wien
Posts: 2037
hast du eine präzise aufgabenstellung zu erfüllen oder willst einfach nur ein file öffnen bzw überprüfen ob es erfolgreich geöffnet wurde?

eine möglichkeit wäre dann:

...
char input [1024];
...
cin << input;
...
ifstream file (input); // bzw ofstream
...
if (!file.is_open())
...
else
...
file.close();

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
Zitat von LakiStrike
char *datei = NULL;
...
cin >> *auswahl;
...

:confused:

Bodominjaervi

OC Addicted
Registered: Jul 2002
Location: AT
Posts: 7808
habs jetzt mit char auswahl[..] gmacht und es funkt! Dankeschön :)

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
Problem ist, in nem NullPointer kann man nicht wirklich viel Speichern ;)

Abgesehen davon wäre das einlesen dann so:

Code:
char *auswahl = (char *) malloc(1000); //1000 Bytes für den Pointer auswahl reservieren.

cin >> *auswahl;

.....

free(auswahl);

EDIT (Ringding): Sternchen vor auswahl hat gefehlt.
Bearbeitet von Ringding am 03.10.2002, 14:33

Bodominjaervi

OC Addicted
Registered: Jul 2002
Location: AT
Posts: 7808
aja, sorry! gott bin i deppad! Dankeschön! Endlich Problem gelöst, bald kommen neue! :)

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
Zitat von Vir@s
EDIT (Ringding): Sternchen vor auswahl hat gefehlt.

Sorry, aber wenn du einen Stern vor auswahl machst schreibst du nur in die aktuelle Pointer location, wodurch nur 1 Zeichen einlesbar ist. Korrekt ist es ohne Stern!

(Abgesehen davon sollte man sowieso kein cin verwenden ;))

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Aja stimmt. cin kann man schon verwenden, aber dann bitte mit string und nicht mit char *.

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
naja cin ist so ne 0815 methode (in meinen Augen, aber über Programmierstil lässt sich ja streiten ;)).
Bin mehr für char pointer + malloc function => scanf ;)

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3236
scanf hat viele fehler
laut unsrem inf lehrer soll ma lieber mit gets in einen buffer einlesen und dann mit SSCANF durchscannen den buffer

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11346
Zitat von Neo-=IuE=-
scanf hat viele fehler

welche denn?

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3236
frag nicht mich sondan meinen inf-lehrer :D
sorry habs ma net gmerkt bzw hat ers uns nie so genau gsagt ;)

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
scanf hat keine Fehler, aber Schwachstellen, mit denen man leicht einen Buffer Overflow produziert (wenn man Strings einliest). Also es stimmt schon, dass man es nicht verwenden soll.

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3236
ja irgendwas in der richtung wars, wahrscheinlich eh genau des ;)

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
Ich würd sagen es kommt ganz auf das an was du machen willst, im formatiert einlesen ist scanf ungeschlagen, wo sonst kann man so einfach 2 integer einlesen, usw....

Prinzipiell für strings, chars, etc ist gets natürlich besser, funktioniert mit scanf aber auch ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz