Cita de: MAFUS en 25 Diciembre 2015, 01:23 AM
Muy buenas.
Pues hay unos cuantos bugs.
Línea 14, 16 y 20: debes cambiar la forma con que haces el incremento. No te interesa el valor que hay guardado en el puntero, solo incrementarlo. Eso es cambiar *var++ por var++.
Por otra parte cuándo la cadena original no tiene separador, el separador es el primer carácter, o hay pocos caracteres en la cadena apuntada por s hay basura en las cadenas s y t.
¿Qué diferencia hay entre *s++ y s++? Creo que en la primera incrementas la posición de la memoria en la que se encuentra *s, pero en la segunda no sé que haces.
¿Que os parece así?

Código (c) [Seleccionar]
int strssr(const char *arg /*Argumento que contiene los numeros*/,
char *s /*Puntero a since */,
char *t /*Puntero a to */,
char lim /*Limite de separacion */)
{
if(arg == NULL||s == NULL||t==NULL)
return 1;
char *str = (char *)arg;
while(*str && (*s++ = *str) && !(*++str eq lim));
while(*str && (*t++ = *++str));
}
Más resumido todo.