Kann mir bitte jemand erklären warum ich immer wieder Kauderwelsch bekomme nachdem ich strok() auf myString benutzt habe? Ein Bild meiner Produktion ist unten. Ich habe versucht, jedes einzelne Element in myString Initialisierung ein NULL-Zeichen zu sein, aber mein Code immer noch nicht funktioniert :(RPN Rechner in C
Erwartete Ausgabe:
Meine Leistung:
int main()
{
int i;
char myString[60];
char *token;
float result;
float x;
float y;
struct Stack myStack;
StackInit(&myStack);
BOARD_Init();
printf("\nWelcome to my RPN calculator.\n");
printf("Enter floats and + -/* in RPN format: \n >");
for (i = 0; i < sizeof (myString); i++) {
myString[i] = '\0';
}
fgets(myString, sizeof (myString), stdin);
token = strtok(myString, " ");
while (token != NULL) {
printf("%f\n", atof(token));
token = strtok(NULL, " ");
if (atof(token) != 0) {
StackPush(&myStack, atof(token));
} else if (*token == '+') { // if token is addition
StackPop(&myStack, &y);
StackPop(&myStack, &x);
result = x + y;
StackPush(&myStack, result);
} else if (*token == '-') { // if token is subtraction
StackPop(&myStack, &y);
StackPop(&myStack, &x);
result = x - y;
StackPush(&myStack, result);
} else if (*token == '*') { // if token is multiplication
StackPop(&myStack, &y);
StackPop(&myStack, &x);
result = x * y;
StackPush(&myStack, result);
} else if (*token == '/') { // if token is division
StackPop(&myStack, &y);
StackPop(&myStack, &x);
result = x/y;
StackPush(&myStack, result);
}
}
while (1);
}
Bitte nicht Post Bilder der Textausgabe. Fügen Sie es als Text in die Frage selbst ein. Dies ermöglicht es anderen, es leichter als Referenz in Kommentaren/Fragen zu kopieren. – kaylum
Bitte posten Sie auch eine [mcve]. Wir können keinen Code kommentieren, den wir nicht sehen können. Vollständiger Code erlaubt uns auch, es auszuführen und das Programm für uns selbst zu sehen/zu debuggen. – kaylum
'while (Token! = NULL) { printf ("% f \ n ", atof (Token)); token = strtok (NULL, ""); ': Das erste Token wird verworfen. – BLUEPIXY