en 3 lineas:char*tmp;while((tmp=strchr(cadena,32))!=NULL) sprintf(tmp,"%s",tmp+1);32 es el codigo de el caracter de espaciadoademas asi no necesitas el string.h
¿?¿?¿?¿?¿?¿?¿?¿¿?si la necesita a string.h , donde crees que esta strchr() ???????y dudo de la funcionalidad del codigo que has escrito, si alguien lo puede probar, buenisimo, ya que aqui no tengo ningun compilador para probar.saludos amigo
salta error en el sistema
tmp siempre que no es NULL es un puntero a un espacio (' ') dentro de la cadena original (h en este caso) entonces sprintf le da formato.sprintf(tmp,"%s",tmp+1);Por ejemplo:tmp = " PROBANDO ESTO - CHE";tmp + 1 = "PROBANDO ESTO - CHE";entonces tmp pierde el espacio del principio mediante una copia.
Es lógico porque no has reservado memoria. char *tmp está muy bien, pero no te reserva la memoria para la futura cadena. Tienes 2 opciones: o usas malloc() o defines un vector de tamaño fijo, rollo char tmp[256].