void main() {
 char *str = 256;
 while (1) {
  printf("> ");
  schanf("%s", str);
  printf("%s\n", str);
 }
}

このプログラムに対し、コンパイルして
echo "abc \n def \n ghi" | ./a.out
とすると思った結果を得られません。

なぜなのでしょうか?