将 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本身就不行