我遇到了scanf()
卡住的问题,继续该程序的唯一方法是输入exit。Scanf卡住
我的输入是这样的:
L 1 1 3 4 C 2 3 4
,其中数字是L和C.
int main()
{
// Get use input and put in array
int count, x;
int array[4];
char type;
scanf("%c", &type);
for (x = 0; x < 2; x++)
{
if (type == 'L')
{
for (count = 0; count < 4; count++)
{
scanf("%d", &array[count]);
}
} else if (type == 'C')
{
for (count = 0; count < 3; count++)
{
scanf("%d", &array[count]);
}
}
if (scanf("%*[ \n\t]%c", &type) == 0)
{
printf("Error");
break;
}
}
scanf函数语句有问题的参数:
scanf("%*[ \n\t]%c", &type)
作品好吧,如果我不是在线的末尾,但另有其他。但是,我不知道有多少个L和C对象,因此不能依赖for循环的值。
我有点失落你的问题。该代码正好读取两个块(每个都是'L####'或'C###'),跳过空格,再读一个字符,然后退出。它应该做什么?你让它听起来像它应该保持阅读 –
目前它只读了两个,但我将它改为一个while循环,以便我可以读取未知数量的块。我在阅读所有的块时遇到了困难,不过因为阅读最后一个字符时的scanf被卡住了,虽然从技术上讲所有的字符都被读过了,所以我猜这是它被卡住的原因。 – Denis
检查每个'scanf()'调用的返回值;它可能是其中一个失败并为下一个造成问题的其中一个。 –