Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » printf ??

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 <
000
09.12.2005, 22:14 Uhr
yan_limo



hallo :
ich habe ein kleines problem und bitte um hilfe:
ich habe

C++:
struct rechnen{
    
   int A;
   int B;
   regeln op;
}


mit regeln ist eine enum (so wie struct )auch definiert



und in main() will ich es benutzen:


C++:
rechnen operation[3];
/*......*/
operation[1].op = op_sub;
printf("die operation : % (????was soll ich hier schreiben damit ich op_sub ausgebe)\n",  operation[1].op );






Bearbeitung von Leif:
cpp-Tags gesetzt

Dieser Post wurde am 09.12.2005 um 22:20 Uhr von Bruder Leif editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.12.2005, 22:19 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!


C++:
printf("die operation : %s\n", operation[1].op == op_sub ? "op_sub" : (operation[1].op == op_add ? "op_add" : "sonstige"));



Oder:


C++:
printf("die operation : ");
switch(operation[1].op)
{
case op_sub: printf("op_sub\n"); break;
case op_add: printf("op_add\n"); break;
default: printf("sonstige"); break;
}


--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.12.2005, 22:24 Uhr
yan_limo



aber ich habe bis zu 200 operationen op_...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.12.2005, 22:30 Uhr
yan_limo



ich will nur eine operation ausgeben ,habe so geschrieben:
printf("die operation: %s\n",operation[1].op);

leider klappt nicht,da kommt "segmentation fault"

das ergebnis soll :
die operation :op_sub
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.12.2005, 22:38 Uhr
Bruder Leif
dances with systems
(Operator)


In dem Fall kannst Du immer noch ein Array von Strings anlegen, das den op_dingens entspricht und deren Bezeichnungen im Klartetxt enthält:


C++:
char op_names[][] =
{
   "op_sub",
   "op_add",
   "...usw."
}

printf("die operation : %s\n", op_names[operation[1].op]);



Wichtig ist dabei nur, dass die Strings in der gleichen Reihenfolge in der Liste stehen, wie die op_dingens im enum.

Sorry, aber eine andere Möglichkeit, enums in Strings umzuwandeln gibt es AFAIK in C/C++ nicht. C# und ein paar andere Sprachen können das, aber C/C++ macht einfache Integer draus...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.12.2005, 23:26 Uhr
yan_limo



danke sehr
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
10.12.2005, 10:45 Uhr
Gap



Wobei ich die String-Liste noch konstant machen würde:


C++:
const char op_names[][] =
{
   "op_sub",
   "op_add",
   "...usw."
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
10.12.2005, 17:17 Uhr
0xdeadbeef
Gott
(Operator)


Ich wär für

C++:
char const *const op_names[] = { ... };


sonst verschwendet ihr Speicherplatz. Wenn es der Compiler überhaupt frisst, das müsst ich jetzt testen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: