c语言动态链表错哪了

#include
#include
int main()
{
    struct date 
    {
        int yue;
        int r;
        struct date* next;
    };
    int led = sizeof(struct date);
    struct date* yi, * er, * head;
    yi = (struct date*)malloc(led);
    er = yi;
    head = yi;
    scanf_s("%d,%d", &yi->yue, &yi->r);
    for (;;)
    {
        yi = (struct date*)malloc(led);
        scanf_s("%d,%d", &yi->yue, &yi->r);
        er->next = yi;
        er = yi;
        while (yi->yue == 0)break;
    }
    er->next = NULL;
    printf("%d,%d", head->yue, head->r);
    return 0;
}

```c

  while (yi->yue == 0)break;
改为
  if(yi->yue == 0)break;
而且如果yue输入0就结束的话,应该先scanf输入两个值,判断不为0再创建节点啊