ページ 11

getch

Posted: 2016年9月02日(金) 01:42
by おーばー

コード:

int main(void){
    test *linked_list;
    default_list(&linked_list);
    
    while(LOOP){
      char buffer[256],sel;
      int check,retry;
      
      fgets(buffer,sizeof(buffer),stdin);
      sscanf(buffer,"%c",&sel);
      if('0'<sel&&sel<'5'){
        fgets(buffer,sizeof(buffer),stdin);
      }
      switch(sel){
        case '1':set_frontal(&linked_list,buffer);
                 printf("#1  ");
                 break;
                 
        case '2':set_interval(&linked_list,buffer);
                 printf("#2  ");
                 break;
                 
        case 3:set_rear(&linked_list,buffer);
                 printf("#3  ");
                 break;
                 
        case 4:print(&linked_list);
                 printf("#4  ");
                 break;
                 
        default :printf("終了を確認しました\a\n終了してよろしいですか?[Y/N]");
                 check=getch();
                 putchar(check);
                 printf("\n");
                 break;
      }
      if(check=='Y'||check=='y'){/*再確認時のユーザーの意思の反映*/
        exit(1);
      }
    }
    return 0;
  }
上記のコードで自分の思った通りに動いたというものの疑問があります
switch文のdefaultの部分のgetch()についてです,コードを書いているときはエンターなしで読み込めれたらいいな,と思っていたけれど
やり方もわからないしとりあえず一文字読み込めたらいいなと思いgetchを選びました、そしていざテストをしてみるとエンターなしで動いたため、
あ、これでよかったのか。。。?と思っていましたが別のプログラムではエンターが必要だったような...と少しあいまいです
なぜこのようなことになったのですか???

Re: getch

Posted: 2016年9月02日(金) 10:52
by Otiham
getch()とgetchar()が混同しているのでは?
getchar()はエコーバックされますが、getch()はエコーバックされないためEnterキーの入力を必要としない筈です。

Re: getch

Posted: 2016年9月03日(土) 00:03
by おーばー
なるほどです!
お初ですね,今後ともよろしくお願いします