for(i = 0; (a[i] = getchar()) != EOF && a[i] != '\n' && i < MAX - 1; i++)
;
こういう文字入力の仕方ってありなのか?それとも
for(i = 0; (b = getchar()) != EOF && b != '\n' && i < MAX -1; i++)
a[i] = b;
こんなしなきゃ駄目なのだろうか?