if (text[text_size] != '\0')
{
 printf("終端が\\0じゃないです\n");
 return 1;
}
この処理に何の意味がある?文字列の終端は'\0'だ。

else
{
 text_copy++;
 printf("実行されません\n");
}
実行されないのになんで書くんだ?

144は指摘された点をつぎはぎのように書き加えていくんじゃなくて、
今まで指摘されたことを総合して、もう1度最初からプログラムを書いた方がいいぞ。
処理の仕方をもう1度よく見直せ。自分のプログラム見てわかりにくいと思わないか?
>>173に書かれているような関数を使って、もっと簡潔に書けるから考えてみろ。