scanfの部分をこう追加や変更を加えればscanfの問題はOKですか?
char x;
fgets(x,sizeof(x),stdin);
i = atoi(x);
で、エラー文をiの値が1,2,3以外のときは数字が違うと言うエラー