Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Switch break usw..

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
09.11.2008, 20:41 Uhr
huckleberry



Ich weiss ein leidiges Thame, aber ich komm ne tdrauf...

Hab mal hier ne switch?
Was er zwischen den Zeilen macht is wurscht.
ABER, wenn ich bei
case 'r':
printf("Readen...\n");
break;

sollte er ja in dem Falle, Readen... drucken und das break sollte ja die swich verlassen?
Aber die
default:
oder
case '-1':
wird immer ausgeführt. Wasrum beendet break nicht die switch???


Code:
switch (next_option)
    {
        case 'h':
            print_usage(stdout, 0);
        case 'r':
            printf("Readen...\n");
            break;
        case 'o':
            blabla();
            break;
        case 'v':
            printf("Verbose!\n");
            break;
                case '-1':
                        printf("Fehlerfall......");
        default:
            printf("Use:\033[0;31m\t'%s -h'\t\033[0mfor help.\n", argv[0]);
    } //end_switch_next_option



thnxa lot and mfg
huck
--
There are 10 types, those who understand binary and those who don't...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.11.2008, 03:20 Uhr
Pablo
Supertux
(Operator)


1. was heißt 'readen'? Meinst du 'read'?
2. wenn immer default ausgeführt wird, liegt es dann daran, dass next_option weder 'h', noch 'r' noch 'o' noch 'v' ist. Warum? Falsche Verwendung von getopt? Mach vor dem switch printf("next_opt: %c\n", next_opt); und siehe selbst, was da raus kommt.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 10.11.2008 um 03:23 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.11.2008, 21:19 Uhr
huckleberry



sorry Leute für ungenaue Angaben:

Zitat von Pablo:
1. was heißt 'readen'?

Damit meinte ich wenn case 'r' sodass er in diesme Fall hier "Readen..." ausgeben sollte!


Zitat von Pablo:
2. wenn immer default ausgeführt wird, liegt es dann daran, dass next_option weder 'h', noch 'r' noch 'o' noch 'v' ist. Warum? Falsche Verwendung von getopt? Mach vor dem switch printf("next_opt: %c\n", next_opt); und siehe selbst, was da raus kommt.

Ausgabe ist bei ./prog -r:
next_option: r

getopt parst er schon richtig! mir gehts nur um die switch. er springt auch bei ./prog -r korrekt rein und gibt "Readen..."; aber er macht auch das Zeug was bei case '-1' steht, obwohl ich überall (auch in case 'r') ein break habe. Wenn ich ./prog -r sollte er ja nur "readen..." ausgeben und dann raus aus der switch! im falle von -r will ich das Zeug bei case -1 oder default: nicht sehen..

mfg und thnxalot
huck
--
There are 10 types, those who understand binary and those who don't...

Dieser Post wurde am 13.11.2008 um 21:21 Uhr von huckleberry editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.11.2008, 21:23 Uhr
0xdeadbeef
Gott
(Operator)


Kauft dir dein Compiler

C++:
  case '-1':


wirklich ab?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
13.11.2008, 21:43 Uhr
huckleberry




Zitat von 0xdeadbeef:
Kauft dir dein Compiler

C++:
  case '-1':


wirklich ab?

nur ne warnung:
prog.c:81:8: warning: multi-character character constant
In zeile 81 steht:
case '-1':
usw..
--
There are 10 types, those who understand binary and those who don't...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
13.11.2008, 21:45 Uhr
0xdeadbeef
Gott
(Operator)


Naja, was er daraus macht, dürfte nicht definiert sein. Wandel das mal in etwas um, was auch Sinn ergibt.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
13.11.2008, 21:54 Uhr
huckleberry




Zitat von 0xdeadbeef:
Naja, was er daraus macht, dürfte nicht definiert sein. Wandel das mal in etwas um, was auch Sinn ergibt.

Wenn ich nun ohne Argumente aufrufe, ist next_top -1 laut gdb. ist ja auch richtig so.
anstatt case '-1' aufzurufen gibt er hier nur default:-zweig aus?
also verzeigt er bei -1 nur in default, obwohl case '-1' abgefangen wird? oder fange ich die -1 als signed interger anders ab, als mit ' einem Hochkomma?

mfg huck
--
There are 10 types, those who understand binary and those who don't...

Dieser Post wurde am 13.11.2008 um 21:58 Uhr von huckleberry editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
13.11.2008, 22:07 Uhr
0xdeadbeef
Gott
(Operator)


Die Hochkommas geben eine Zeichenkonstante an, also den ASCII-Code. Danach ist '1' zum Beispiel äquivalent zu (char) 48. '-1' sollte ein Compiler eigentlich ablehnen, was er bei dir daraus macht, kann ich nur raten. (Möglicherweise '-', möglicherweise aber auch irgendwelchen Blödsinn. "Nicht definiert" bedeutet im Grunde, der Compiler kann dir da jeden Blödsinn draus machen.)

-1 dagegen ist stumpf -1, was getopt am Ende der Optionen zurückgibt.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 13.11.2008 um 22:09 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
13.11.2008, 22:25 Uhr
huckleberry



Ha. Nun gehts.
hattest recht beef.
hab case -1: statt case '-1':
um nur die -1 als signed int abzufangen *gg
cool thnx pablo & deacbeef
--
There are 10 types, those who understand binary and those who don't...

Dieser Post wurde am 13.11.2008 um 22:38 Uhr von huckleberry editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
14.11.2008, 01:06 Uhr
Pablo
Supertux
(Operator)



Zitat:
sorry Leute für ungenaue Angaben:

Zitat von Pablo:
1. was heißt 'readen'?

Damit meinte ich wenn case 'r' sodass er in diesme Fall hier "Readen..." ausgeben sollte!




das Wort 'Readen ' gibt es im Englisch nicht, es heißt auch "a character has been read"
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 14.03.2009 um 14:22 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: