为什么scanf在我预期的时候不会终止

时间:2010-03-01 11:30:18

标签: c

如果我写了一个C程序,那么它就不会自动退出,如果像......那样......

#include<stdio.h>
int main ()
{
  int a, b, c, d;

  printf ("enter the value ");
  scanf("%d %d %d ",&a,&b,&c);
  d=a+b+c;
  if(d==180)
    printf("triangle is valid ");
  else 
    printf("triangle is invalid ");
  return 0;
}

然后它不会自行终止.....

任何人都可以帮忙弄清楚这个问题是什么......

4 个答案:

答案 0 :(得分:7)

这是scanf格式字符串末尾的空格。删除该空格,您的程序将终止。

答案 1 :(得分:5)

我猜scanf()格式字符串与您输入数据的格式之间存在不一致。但严重的是,在提出新问题之前,您应该接受一些旧答案。

答案 2 :(得分:3)

省略scanf字符串中的空格

scanf("%d%d%d",&a,&b,&c);

答案 3 :(得分:0)

scanf函数通常会跳过输入之间的空格。

在您的代码中,您可以按以下格式询问输入

   scanf("%d %d %d ",&a,&b,&c);

它表示1输入为1个空间,1个输入和1个空间,1个输入和1个空间。

因此,如果您在输入后给出三个输入,它也将跳过新行。

因为scanf函数将输入作为非空格字符。

要避免这种情况,您需要提供4输入。所以那个时候,前三个输入存储在变量a b c中,然后下一个空格和值存储在缓冲区中。

After run the program you need to give the input like the folllowing 
   12 12 12 12 

这里前三个输入存储在a b c变量中。

否则您的scanf格式应为以下格式

scanf("%d%d%d",&a,&b,&c);