

以下のコードは双方向リストを用いて入力された値を順番に格納するプログラムです。  
このコードを実行すると入力はできるのですが-１００００を入力してもforから抜けられません。原因は何でしょうか？

他にもミスがあれば指摘お願いします。

[code]

    #include ＜stdio.h >
    #include < stdlib.h >
    
    struct data_t{
      int num;
      struct data_t *next, *prev;
    };
    
    void insert(struct data_t *p, struct data_t *w){
        (p->prev)->next=w;
        w->prev=p->prev;
        p->prev=w;
        w->next=p;
    }
    
    void printall(struct data_t *p){
      struct data_t *a;
      a=p;
      for(;p!=a;){
      printf("p:%p, bp:%p, fp:%p, data:%d\n", p, p->prev, p->next, *p);
      p=p->prev;
      }
    }
    
    int main(){
      struct data_t *p=NULL, *w=NULL, *head=NULL;
      int d, count;
      head=(struct data_t *)malloc(sizeof(struct data_t));
      p=(struct data_t *)malloc(sizeof(struct data_t));
      w=(struct data_t *)malloc(sizeof(struct data_t));
      p->prev=head;
      p->next=head;
      head->next=p;
      head->prev=p;
      for(count=1;scanf("%d", &d)!=-10000;count++){
        if(count==1){
          p->num=d;
        }else{
          w->num=d;
          insert(p, w);
          p=p->next;
          printf("a");
        }
      }
      p=head->prev;
      printall(p);
      return 0;
    }
    
[/code]


CC BY-SA 4.0
2019-11-05T04:50:23.647
60267
2019-11-05T05:08:28.267
2019-11-05T04:56:11.067
32986
36484
question
c
for(;scanf("%d", &d);){ がうまく動いてくれません


[`scanf`](https://ja.cppreference.com/w/c/io/fscanf)の戻り値は

> 代入に成功した受け取り引数の数
> (最初の受け取り引数が代入される前にマッチの失敗が発生した場合はゼロになることがあります)、または最初の受け取り引数が代入されるまえに入力の失敗が発生した場合は
> EOF。

ということで、`-10000`が返されることはありません。


CC BY-SA 4.0
2019-11-05T05:08:28.267
60268
2019-11-05T05:08:28.267
4236
60267
answer