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é...