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

san*_*101 0 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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

Can*_*der 7

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

  • 这需要一个解释:scanf格式的空格意味着它应该读取尽可能多的空格(空格,换行符等).因为在最后有一个,它将继续读取,直到输入非空白字符.最好的解决方案是不要在格式字符串中使用空格,除非您明确需要读取空格.请注意,大多数格式化程序(例如%d)会自动读取并丢弃输入中的所有前面的空格. (7认同)

SF.*_*SF. 5

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