整数変数に浮動値を入力すると、期待どおりに小数部分がスキップされますが、その後はコンソールから値が読み取られない ac プログラムを実行しようとしています。次のコード スニペットでは、入力すると scanf 行がスキップされます浮動小数点値です。理由が見つかりません。助けてください。
#include <stdio.h>
#include <stdlib.h>
#define SIZE 50
void push(int i);
int pop(void);
int *tos, *p1, stack[SIZE];
int main(void)
{
int value;
tos = stack; /* tos points to the top of stack */
p1 = stack; /* initialize p1 */
do
{
printf("\n Enter value: \n");
scanf("%d", &value);
printf("\n value entered is %d",value);
if(value!=0)
push(value);
else
printf("value on top is %d\n", pop());
} while(value!=-1);
return 0;
}
void push(int i)
{
p1++;
if(p1==(tos+SIZE))
{
printf("Stack Overflow.\n");
exit(1);
}
*p1 = i;
}
int pop(void)
{
if(p1==tos)
{
printf("Stack Underflow.\n");
exit(1);
}
p1--;
return *(p1+1);
}
コンソールから浮動小数点値を入力している間、小数部分を無視し、その後実行を続けますが、scanf ステートメントが機能しないため、スタックがいっぱいになるまで実行した後、終了します。ここで scanf が機能しない理由を見つけるのを手伝ってください?