누군가 myString에서 strok()를 사용한 후에 왜 계속 헛소리가 날 수 있는지 설명해 주시겠습니까? 내 출력 사진이 맨 아래에 있습니다. 나는 NULL 문자로 mystring에있는 모든 단일 요소를 초기화 시도하지만 여전히 내 코드 나던 일 :(RPN 계산기 C
예상 출력 :
내 출력 :
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);
}
을하지 마십시오 텍스트 출력 이미지를 게시하십시오. 질문 자체 내에 텍스트로 붙여 넣으십시오. 이를 통해 다른 사람들이 코멘트/질문에서 참조하기 쉽게 복사 할 수 있습니다. – kaylum
또한 [mcve]를 게시하십시오. 우리가 볼 수없는 코드에 대해서는 언급 할 수 없습니다. 완전한 코드는 또한 우리가 그것을 실행하고 스스로 프로그램을보고/디버그 할 수있게합니다. – kaylum
'while (token! = NULL) { printf ("% f \ n", atof (토큰)); token = strtok (NULL, "");': 첫 번째 토큰이 삭제됩니다. – BLUEPIXY