>>120
scanf("%c", &flag);
↓
read(0, &flag, sizeof flag);

では駄目か?
それともscanf関数を使う縛りがある?