【发布时间】:2013-08-29 15:47:26
【问题描述】:
我正在尝试执行一个 c 程序,如果我在其中输入浮点值到一个整数变量,它会按预期跳过小数部分,但之后它不会从控制台读取值。在下面的代码 sn-p 中,它会跳过那个 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);
}
从控制台输入浮点值时,它会忽略小数部分,然后 do while 继续执行,但 scanf 语句不起作用,因此在执行后直到堆栈填满,然后退出。请帮助找出 scanf 的原因在这里不工作?
【问题讨论】:
-
检查您的
scanf()返回值。它将返回 成功 解析的次数。 -
删除了 C++ 标签,因为代码是纯 C。
标签: c