Le strcat() attend une chaîne C terminée par un caractère '\0'. Sinon il foire.
Donc pour résoudre cette difficulté, tu déclares un char[] toto = " "; (longueur 1), et quand tu as trouvé ton caractère, tu peux écrire :
toto[0] = String[i];
strcat(temp, toto);
Sinon, je te signale que ton bout de code ne modifie pas du tout String, donc aucun caractère n'y sera enlevé...