getch

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
おーばー

getch

#1

投稿記事 by おーばー » 9年前

コード:

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を選びました、そしていざテストをしてみるとエンターなしで動いたため、
あ、これでよかったのか。。。?と思っていましたが別のプログラムではエンターが必要だったような...と少しあいまいです
なぜこのようなことになったのですか???

Otiham

Re: getch

#2

投稿記事 by Otiham » 9年前

getch()とgetchar()が混同しているのでは?
getchar()はエコーバックされますが、getch()はエコーバックされないためEnterキーの入力を必要としない筈です。

おーばー

Re: getch

#3

投稿記事 by おーばー » 9年前

なるほどです!
お初ですね,今後ともよろしくお願いします

閉鎖

“C言語何でも質問掲示板” へ戻る