scanf("%[123]",&i);

1,2,3以外入力拒否になる,では?