000
22.05.2006, 13:40 Uhr
Stephi
|
Hallo Welt! Wieder mal ich. Also das folgende programm läuft ja eigentlich ganz gut. Mein einziges problem ist, dass er bei der Ausgabe der Wörter immer eine Menge Speicherschrott ausspuckt! Es sollte so gehen, dass er falls die einzige Eingabe set oder add oder wie auch immer lautet einfach nur Aúsgeben SET: (und hiér nichts, anstelle von Speicherschrott! ;-P) Was mache ich falsch? Gruß Stephi
Code: |
#include <stdio.h> #include <string.h> #include <stdlib.h> #define _NOP 99 #define length 81
int CheckSchluessel(char *AszSchluesselwoerter[], char *szTempstr, int dim) { int i=0, iValue=_NOP;
for (i=0; i<dim; i++) { if (strncmp(szTempstr, AszSchluesselwoerter[i], strlen(AszSchluesselwoerter[i]))==0) iValue=i; } return iValue; }
int main () { typedef enum {EXIT, SET, ADD, SUB, MUL, DIV, NOP=_NOP}KEY; char szTempstr[length]; char *AszSchluesselWoerter[]={"exit", "set", "add", "sub", "mul", "div"}; int dim =6, i=0; KEY input=EXIT;
printf("***************************************************************\n"); printf(" Schluessel \n"); printf("***************************************************************\n");
do { printf("\nGeben Sie das Schluesselwort(-woerter) ein!\n"); gets(szTempstr);
input=(KEY)CheckSchluessel(AszSchluesselWoerter, szTempstr, dim);
switch(input) { case EXIT: printf("\nExit Program\n");exit; break;
case SET: printf("\nSET:"); for (i=4;i<length && szTempstr[i]!=0;i++) printf("%c", szTempstr[i]); break;
case ADD: printf("\nADD:"); for (i=4; i<length && szTempstr[i]!=0;i++) printf("%c", szTempstr[i]); break;
case SUB: printf("\nSUB:"); for (i=4;i<length && szTempstr[i]!=0;i++) printf("%c", szTempstr[i]); break;
case MUL: printf("\nMUL:"); for (i=4;i <length && szTempstr[i] !=0;i++) printf("%c", szTempstr[i]); break;
case DIV: printf("\nDIV:"); for (i=4; i<length && szTempstr[i] !=0; i++) printf("%c", szTempstr[i]); break;
case NOP: printf("Nichts erkannt\n"); break; } } while (input != EXIT); return 0; }
|
|