return Wert für Fehlermeldung nutzen!?!
-
hi,
also ich soll für verschiedene, auftretende Fehler jeweils eine Fehlermeldung ausgeben. Und im Hauptprogramm soll dann eine switch case Abfrage sein die zum jeweiligen return Code, die passende Fehlermeldung ausgibt.switch (return) { case -1: printf("ERROR: Too many parameters\n"); break; case -2: printf("ERROR: Input file could not be opened\n"); break; case -3: printf("ERROR: Input file is not a WAVE file\n"); break; case -4: printf("ERROR: Unsupported WAVE format\n"); break; }
nur der Compiler mag das "return" nicht!!
Aber von der Theorie müsste es doch so gehen, oder?
Das ich in einer Funktion zb.: return -2 habe und in der main dann das switch, die richtige Fehlermeldung ausgibt.mfg
-
int blah = func(); switch(blah) ....
-
Der Compiler beschwehrt sich zurecht, da return ein Schlüsselwort ist und nicht als Variablenname verwendet werden darf!
grüße
-
ja und wie fange ich dann die return Werte gscheit ab?
mfg
-
So, wie es dir feigling gezeigt hat.
-
so wie es feigling gemacht hat.
-
int error = return(); switch(error)
so habe ich die Lösung interpretiert.
Nur funzts nicht ganz so.mfg
-
Natürlich funktioniert das nicht ...
int func(void) { return 1; } ... int blah = func(); switch(blah) ....
Guck dir nen C-Buch an. Sowas steht in nem C-Buch meist in den ersten 5-10 Kapiteln.
-
ja aber ich hab ja nicht nur eine Funktion sondern mehrere, die verschiedene return Werte liefern. Und möchte das ja in einer switch Abfrage drinnen haben sonst hätte es keinen Sinn.
aber THX,
mfg
-
Poste mal deinen Code...
-
Hallo,
das 'return' heisst nichts anderes als das du aus einer Funktion wieder ins Hauptprogramm gehst. Du 'kehrst also zurueck' (= return). Gaebe es dieses 'Schluesselwort' nicht, muesste die komplette Funktion immer bis zum Ende laufen und man koennte halt auch nicht so direkt einen Wert mit zurueckliefern.
Hier mal eine Funktion die den Wert einer Variablen, also in dem Fall 20, zurueckgibt:
int Funktion(void) { int Wert = 20; return Wert; }
Und im Hauptprogramm kannst du von der Funktion den Wert dann entgegennehmen:
int main() { int andererWert; // Der Wert 20 aus der Funktion wird in der Variablen // 'andererWert' gespeichert andererWert = Funktion(); // Das ist das return das Hauptprogramms return 0; }
Und dann musst du halt mit der variablen 'andererWert' das switch aufbauen.
Tip: Du kannst ja fuer verschiedene Funktionen, verschiedene Variablen nehmen und nachdem alle Funktionen durchgelaufen sind dann mehrere switch's machen
ODER
du nimmst z.b. doch nur eine Variable und addierst aus den verschiedenen Funktionen die Fehlerwerte zusammen. Natuerlich immer eine Zehnerpotenz mehr dann.Hoffe hast es einigermassen verstanden was ich meinte :xmas1:
-
int main(int argc, char *argv[]) { char *file_name; if(argc == 2) { file_name = argv[1]; } else if(argc == 1) return -2; else { return -1; } //int control; test(file_name, argc); int errors = ????; switch (errors) { case -1: printf("ERROR: Too many parameters\n"); break; case -2: printf("ERROR: Input file could not be opened\n"); break; case -3: printf("ERROR: Input file is not a WAVE file\n"); break; case -4: printf("ERROR: Unsupported WAVE format\n"); break; default: printf("Error: Unknown error\n"); break; } return 0; } fread(&riff_header, sizeof(int), 3, input); ......... return -3;
kann nicht alles posten weil das Teil einer Übung ist.
mfg
-
Mamma Mia ...
int errors = test(file_name, argc);
Genauso, wie ich dir das in meinem 1. Post gezeigt habe.
-
Das Abzeichen für den nervenstärksten User dieser Woche geht an... *drumrolls* feigling