c++ probs mit zeigern!

Seite 1 von 3 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/c_probs_mit_zeigern_50238/page_1 - zur Vollversion wechseln!


Bodominjaervi schrieb am 01.10.2002 um 14:05

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 schrieb am 01.10.2002 um 14:09

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();


schrieb am 01.10.2002 um 14:14

Zitat von LakiStrike
char *datei = NULL;
...
cin >> *auswahl;
...

:confused:


Bodominjaervi schrieb am 01.10.2002 um 14:49

habs jetzt mit char auswahl[..] gmacht und es funkt! Dankeschön :)


Vir@s schrieb am 03.10.2002 um 13:15

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.


Bodominjaervi schrieb am 03.10.2002 um 17:18

aja, sorry! gott bin i deppad! Dankeschön! Endlich Problem gelöst, bald kommen neue! :)


Vir@s schrieb am 04.10.2002 um 16:33

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 schrieb am 04.10.2002 um 18:03

Aja stimmt. cin kann man schon verwenden, aber dann bitte mit string und nicht mit char *.


Vir@s schrieb am 05.10.2002 um 00:13

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=- schrieb am 05.10.2002 um 13:39

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 schrieb am 05.10.2002 um 14:19

Zitat von Neo-=IuE=-
scanf hat viele fehler

welche denn?


Neo-=IuE=- schrieb am 05.10.2002 um 14:20

frag nicht mich sondan meinen inf-lehrer :D
sorry habs ma net gmerkt bzw hat ers uns nie so genau gsagt ;)


Ringding schrieb am 05.10.2002 um 15:07

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=- schrieb am 05.10.2002 um 15:31

ja irgendwas in der richtung wars, wahrscheinlich eh genau des ;)


Vir@s schrieb am 05.10.2002 um 20:06

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 ;)




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026