Switch-Case
-
Hallo, ich bin noch ein C-Newbie, deshalb diese Frage, und zwar möchte ich eine Switch Case anweisung schreiben, die Struktur soll mir erkennen ob hinter einer Zahl "M" oder "K" steht, und bei bedarf die KB durch die 1024 teilen um einen MB wert zu erhalten. Das "B" ist ein fest deffinierter char bei mir also im Switch case soll eigentlich nur noch nach M oder K gesucht werden. Wie kann so etwas aussehen,das das Proggi mir es dann in der ausgabe richtig liefert.
Thanks a lotswitch (magChar) { case 'M' : ???; break; case 'K' : ???; break; }
-
du fügst einfach nach dem case den Code ein, wo ist das das Problem?
-
Mein Problem ist, das ich nicht weiß, was ich dort reinschreiben soll, da danach eine weitere ausgabe zu erfolgen hat, in der der wert eingetragen werden soll. Vielleicht verstehst du was ich mein wenn du meinen Code siehst. Könntest du mir vielleicht ein Bsp. wie du es schreiben würdest mitschicken, wäre klasse, thanks.
... else if( strstr( instr, trigger2 ) ) // Aufsummieren der MB { sscanf( instr, payloadFormat1, month, day, time); payloadOffset = strstr( instr, "level=" ); sscanf( payloadOffset, payloadFormat2, d1, &size, &magChar, time2, &files ); switch (magChar) { case 'M' : fprintf (ofp, "%ld\n", size); break; case 'K' : fprintf (ofp, "%ld/1024\n", size); break; } time2[2] = '\0'; time2[5] = '\0'; length = 60.0*atoi(time2)+atoi(time2+3)+atoi(time2+6)/60.0; if ( !strcmp( currtime, "" ) ) strcpy ( currtime, time ); else if ( strcmp( currtime, time ) ) { fprintf( ofp, "%s,%s %s,%s,%0.2lf,%ld:%02ld,%ld\n", savegroup, day, month, currtime, sizeSum, (long)lengthSum, (long)(60.0*(lengthSum-(long)lengthSum)+.5), filesSum); ...
-
Ich denke er meint es ein Wenig anders (vielleicht etwas präzisere Fragen stellen?)
Da das "b" fest definiert ist muss man nur das vorletzte Zeichen in dem String untersuchen.
Folgendermaßen könntest Du es versuchen:
int main(){ char strVar[15]; int dummy=0; /* Testwerte zuweisen Anfang */ strVar[0] = 'M'; strVar[1] = 'B'; strVar[2] = '\n'; /* Testwerte zuweisen Ende */ while (strVar[dummy] != '\n') dummy = dummy + 1; dummy = dummy -1; switch (strVar[dummy]) { case 'M': /*Code*/ break; case 'K': /*Code*/ break; } return 0; }
Vielleicht konnte Dir das helfen? Allerdings ist hier zu beachten, dass das zu untersuchende Zeichen immer an vorletzter Stelle sich befinden muss!!!
Aber einen Überblick konntest Du erhalten, oder?
-
Sorry dein Text kam erst nach meinem Eintrag zum vorschein, also vergessen, hab dein Problem falsch verstanden, sorry!
-
Danke, ich hab's hinbekommen. Wußte nicht das ich nach dem Case-ausdruck direkt eine anweisung angeben kann. Man lernt immer wieder neues dazu.
trotzdem danke, cu
-
Danke, ich hab's hinbekommen. Wußte nicht das ich nach dem Case-ausdruck direkt eine anweisung angeben kann. Man lernt immer wieder neues dazu.
trotzdem danke, cu