Rückgabewerte einer Function unterscheiden?
-
Hi,
wenn eine Function wie zb.: open(...); verschiedene Rückgabewerte zuückgibt, wie kann ich den Rückgabewert in einen string oder eine int variable oder was auch immer speichern? open würde zum beispiel bei fehlschlag -1 zurückgeben und sonst ein handle. Wenn ich das handle jetzt in einen string schreiben will, wie mache ich das? Ich kann ja mit if (open(...) == -1) das und das und sonst speichere das handle in einem string. Nur wie?Bitte helft mir.
-
Gib mal den Code von Open an. Ich hab nicht die geringste Ahnung, wie man realisieren wollte, das man ein int-Element oder eine Referenz auf was weis ich zurückliefert.
mfg
Glamdring
-
Variable = funktion(parameter, ...);
Open z. B. liefert einen Int Wert zurück, d. h. Variable muss vom Typ int sein.
Dann steht in der Variablen der Rückgabewert der Funktion. Wie der allerdings zustande kommt, muss in der Funktion festgelegt sein....Ansonsten versteh ich die Frage nicht......
-
Also das geht nicht das eine Funktion entweder einen int oder z.B. einen double zurueck gibt. Sie etwas von einem bestimmten Typ zurückgeben. Ausser du arbeitest mit Exceptions, dann kann sie mit eine Exception oder den bestimten Typ zurückgeben.
-
Ah, jetzt hab ichs verstanden
-
CarstenJ schrieb:
Variable = funktion(parameter, ...);
Open z. B. liefert einen Int Wert zurück, d. h. Variable muss vom Typ int sein.
Dann steht in der Variablen der Rückgabewert der Funktion. Wie der allerdings zustande kommt, muss in der Funktion festgelegt sein....Ansonsten versteh ich die Frage nicht......
Ich denke er meint, dass die Funktion entweder einen string oder ein int-Wert zurückgibt.
Diesen möchte er nun in eine Variable speichern. Da er aber nicht weiß, was die Funktion für ein Typ zurück gibt, kann er die Variable nicht definieren.EDIT: Hat sich dann ja erledigt.
-
Ah, Danke.
Probiere ich mal, aber als was soll ich die Variable jetzt definieren?Falls jemand die Frage nicht ganz verstanden hat:
Ich möchte, wenn die Function ein Handle zurückgibt(was ja eigentlich so ist wenn es geklappt hat), dass dieses Handle in einem String oder einem Handle gespeichert wird. Da die Function aber auch -1 zurückgeben kann(wenn sie fehlgeschlagen ist) möchte ich nicht die -1 nicht in meinen String oder Handle speichern, sondern in einer anderen variable (zb.: int fehler;).
Bisher kommen zwar nur Fehler, weiss zwar nicht warum, aber falls es mal klappen sollte wäre mir das hilfreich.
Ich würde gerne mehr über Streams und solche sachen wie datenaustausch zwischen Dateien, Dateien öffnen, lesen, schreiben, schließen und so erfahren, kann mir jemand ein Buch empfehlen, das sich auf dieses Thema spezialisiert, oder wo dieses Thema unter anderem einen großen Teil einnimmt?
Es sollte Verständlicher sein, als in dem Buch was ich habe (Die C++ Programmiersprache), aber auch sehr viel, wenn nicht alles von diesem Thema abdecken, damit ich solche Öffne, Schreibe und Lese-Operationen ausführen kann und es klappt. Kennt da jemand ein Buch?Dummdödel
-
Achso, wegen Open die Function geht so:
int open(const char* Pfad, int Modus);
Pfad = Pfad der zu öffnenden Datei.
Modus =Modus in dem die Datei zu öffnen ist.O_RDONLY 0 Nur lesen.
O_WRONLY 1 Nur schreiben.
O_RDWR 2 Lesen und schreiben.
O_CREAT 256 Wenn die Datei noch nicht existiert, wird sie erzeugt.
O_TRUNC 512 Wenn die Datei bereits existiert, wird sie auf die Länge Null verkürzt.
O_EXCL 1024 Falls die Datei bereits existiert, wird ein Fehler zurückgeliefert.
O_APPEND 2048 Neu geschriebene Daten werden am Dateiende angehängt.
O_TEXT 16384 Die Datei wird im Textmodus göffnet.
O_BINARY 32768 Die Datei wird im binären Modus geöffnet.Rückgabewerte:
Handle = Das Handle der geöffneten Datei.
-1 = Fehler beim Öffnen.
-
Dummdödel schrieb:
Ich möchte, wenn die Function ein Handle zurückgibt(was ja eigentlich so ist wenn es geklappt hat), dass dieses Handle in einem String oder einem Handle gespeichert wird. Da die Function aber auch -1 zurückgeben kann(wenn sie fehlgeschlagen ist) möchte ich nicht die -1 nicht in meinen String oder Handle speichern, sondern in einer anderen variable (zb.: int fehler;).
Nun, es ist ja klar definiert, woran du erkennst ob es einen Fehler gab. Wenn der Rückgabewert == -1
int result = open(..); if(result == -1) handle = result; else fehler = result; // natürlich blödsinn, weil ohnehin -1.
Ich würde gerne mehr über Streams und solche sachen wie datenaustausch zwischen Dateien, Dateien öffnen, lesen, schreiben, schließen und so erfahren, kann mir jemand ein Buch empfehlen, das sich auf dieses Thema spezialisiert, oder wo dieses Thema unter anderem einen großen Teil einnimmt?
Es sollte Verständlicher sein, als in dem Buch was ich habe (Die C++ Programmiersprache), aber auch sehr viel, wenn nicht alles von diesem Thema abdecken, damit ich solche Öffne, Schreibe und Lese-Operationen ausführen kann und es klappt. Kennt da jemand ein Buch?Auf www.c-plusplus.net gibts einen Bereich über Bücher... Aber die Funktion die du jetzt hier beschrieben hast, gehört wohl zu POSIX und hat nichts mit C++ zu tun.
Ansonsten hast du ja schon "die C++ Bibel"... vielleicht reichts ja, wenn du mal hier im Forum in die C++-Faq reinguckst. Da gibts 'nen Beitrag über Ströme und Dateien.
-
Aha, Danke, jetzt ist es klarer.