将 space 分隔的数字从标准输入读取到链表中
Reading space separated numbers from stdin into a linked list
我正在尝试将由空格分隔的数字从 stdin 读取到 c 程序中,并且在每个数字上我都将一个节点添加到链表中。
来自标准输入的输入:
20
20 30 123 34 50
stdin (20) 的第一行用于查找编号为 20 的项目。
第二行包含要插入链表的数据项
进入后应该结束循环,但事实并非如此,我不确定我在这里遗漏了什么。
char follow;
scanf("%d", &M);
while(((count = scanf("%d%c", &element, &follow)) > 0))
{
if(count == 2 && isspace(follow) || count == 1)
{
printf("count = %d and element = %d\n", count, element);
push(&root, element);
}
else{
break;
}
}
问题是 while 循环不会在按下 enter 时结束。
您可以将 if 条件更改为:
if ((count == 2 && isspace(follow) && follow != '\n') || count == 1)
因为space' '
和换行符'\n'
都是空的space,isspace
本身就不行
我正在尝试将由空格分隔的数字从 stdin 读取到 c 程序中,并且在每个数字上我都将一个节点添加到链表中。
来自标准输入的输入:
20
20 30 123 34 50
stdin (20) 的第一行用于查找编号为 20 的项目。 第二行包含要插入链表的数据项 进入后应该结束循环,但事实并非如此,我不确定我在这里遗漏了什么。
char follow;
scanf("%d", &M);
while(((count = scanf("%d%c", &element, &follow)) > 0))
{
if(count == 2 && isspace(follow) || count == 1)
{
printf("count = %d and element = %d\n", count, element);
push(&root, element);
}
else{
break;
}
}
问题是 while 循环不会在按下 enter 时结束。
您可以将 if 条件更改为:
if ((count == 2 && isspace(follow) && follow != '\n') || count == 1)
因为space' '
和换行符'\n'
都是空的space,isspace
本身就不行