c-检查扫描输入

  • 本文关键字:扫描输入 c scanf
  • 更新时间 :
  • 英文 :


我正在尝试制作一个软件来检查数字是正数还是负数。如果给定的输入不是6个数字,它应该会出错。问题是,如果我打印的数字超过6个,软件只会取前6个。我希望它出错。我能做什么?

我还没有学习循环,只允许使用stdio.h

int a, b, c, d, e, f;
int check;
unsigned int positive = 0;
unsigned int negetive = 0;
printf("Please insert 6 numbesn");
check = scanf(" %d %d %d %d %d %d", &a, &b, &c, &d, &e, &f);
printf("%dn", check);
if (check != 6 ) { printf("Error, please try again."); }
else {
if (a > 0) { positive = positive++ ; }
else if (a < 0) { negetive = negetive++ ; };
if (b > 0) { positive = positive++; }
else if (b < 0) { negetive = negetive++; }
if (c > 0) { positive = positive++; }
else if (c < 0) { negetive = negetive++; };
if (d > 0) { positive = positive++; }
else if (d < 0) { negetive = negetive++; };
if (e > 0) { positive = positive++; }  
else if (e < 0) { negetive = negetive + 1; };
if (f > 0) { positive = positive++; }
else if (f < 0) { negetive = negetive++; };
printf("There were %d positive numbers and %d negetive numbers", positive, negetive);
}
}

这假设您打算询问"如果我输入多于6个数字";。

如果使用fgets()读取整行,然后对其进行检查,那么处理(和拒绝(输入会更容易。本例使用sscanf()提取值。它尝试扫描7个值,但只接受6个。

#include <stdio.h>
int main(void)
{
int a, b, c, d, e, f, g;
char buffer[100];
printf("Please insert 6 numbersn");
if(fgets(buffer, sizeof buffer, stdin) == NULL)
return 1;
if(sscanf(buffer, "%d %d %d %d %d %d %d", &a, &b, &c, &d, &e, &f, &g) != 6)
return 1;
printf("%d %d %d %d %d %dn", a, b, c, d, e, f);
return 0;
}

最新更新