>>506
そこでコケてるかどうかは別にして常識として
char *buf="an an an tottemo daisuki doraemon.";

↑
これだと書き換え可能であることが保障されない。
文字列定数へのポインタという意味になる。

正しくはこう。
char buf[] = "an an an tottemo daisuki doraemon.";

bufはchar型配列でmain関数上の自動変数であり書き換えが可能。
配列長は文字列幅によってコンパイル時に自動的に設定される。