2012-11-04 14 views
0

当我尝试使用scanf关于C和Eclipse - scanf函数

int main() { 

    int x1,x2,x3,y1,y2,y3; 

    printf("Enter 3 pairs of positive integers separated by spaces:\n"); 

    scanf("%u %u %u %u %u %u", &x1, &y1, &x2, &y2, &x3, &y3); 

我得到的程序运行,比如为输入。 然后我把输入,但它打印“输入3对...”,什么都不做

为什么呢?

+0

当你说“什么也不做”,你的意思是什么?输入6位数字后它会挂起吗?还是在它进入之前崩溃?只是要清楚:'scanf'需要来自标准输入的输入,所以你必须实际输入这6个数字才能让程序进行。 – amaurea

回答

1

也许你必须输入数值;这是scanf的目标。

顺便说一句,您的程序包含一个未定义的行为:%uint指针不匹配。在printf中使用%d/%i格式。另一种解决方案是声明变量为unsigned int类型,以与printf格式相匹配。此外,您的部分源代码丢失。

+0

%d或带符号整数的%i。 %u代表无符号:) –

+0

这就是我想说的......它在哪里不清楚? – md5

+0

嗯@Kirilenko,你形成句子的方式有点奇怪。 :-)但正确none-less-less –

1

%u是无符号整数。 %d%i是有符号整数。请在C中注意这些quirksgotchas。小心强制更正格式说明符。

+0

我同意你应该小心'%d'与'%u',但我不认为这是真正的问题在这里(一个实现将不得不非常奇怪行为不同这些情况下,只要不我认为问题在于用户不理解程序正在等待他的输入,这就是为什么它没有做任何事情。 – amaurea

0

您可能会发现使用fgets而不是scanf更方便。 eclipse终端有点时髦。

请参阅本post