LINUX.ORG.RU

История изменений

Исправление COKPOWEHEU, (текущая версия) :

А если юзер передумает?

Логичнее проверять что он нажал: если число, то переход, если Ентер, то выбор.

#include <stdio.h>

int main(){
  int x;
  char c;
  scanf("%c", &c);
  if( (c >= '0')&&(c <= '9') ){
    ungetc(c, stdin);
    scanf("%i", &x);
    printf("Number: %i\n", x);
  }else{
    printf("Char: [%c](%i)\n", c, (int)x&0xFF);
  }
}

Но лучше бы уж сделали нормальную навигацию стрелочками вверх - вниз. И выбранный пункт подсвечивать. Либо ESC-последовательностью, либо просто рисовать

  предыдущий_пункт
> выбранный_пункт  <
  следующий_пункт

Исправление COKPOWEHEU, :

А если юзер передумает?

Логичнее проверять что он нажал: если число, то переход, если Ентер, то выбор.

#include <stdio.h>

int main(){
  int x;
  char c;
  scanf("%c", &c);
  if( (c >= '0')&&(c <= '9') ){
    ungetc(c, stdin);
    scanf("%i", &x);
    printf("Number: %i\n", x);
  }else{
    printf("Char: [%c](%i)\n", c, (int)x&0xFF);
  }
}

Но лучше бы уж сделали нормальную навигацию стрелочками вверх - вниз. И выбранный пункт подсвечивать. Либо ESC-последовательностью, либо просто рисовать ``` предыдущий_пункт

выбранный_пункт < следующий_пункт

Исходная версия COKPOWEHEU, :

А если юзер передумает?

Логичнее проверять что он нажал: если число, то переход, если Ентер, то выбор.

#include <stdio.h>

int main(){
  int x;
  char c;
  scanf("%c", &c);
  if( (c >= '0')&&(c <= '9') ){
    ungetc(c, stdin);
    scanf("%i", &x);
    printf("Number: %i\n", x);
  }else{
    printf("Char: [%c](%i)\n", c, (int)x&0xFF);
  }
}

Но лучше бы уж сделали нормальную навигацию стрелочками вверх - вниз. И выбранный пункт подсвечивать. Либо ESC-последовательностью, либо просто рисовать > выбранный_пункт <