Creo que tu codigo rompe la mayoria de las normas de codificacion. No es legible y tiene poco sentido. Me explico:
No tiene sentido que unifiques las lecturas en una sola funcion si luego dicha funcion va a tener dos implementaciones diferentes. Ademas en vez de usar buffers estaticos dentro de la función deberias pasarlos como argumentos. Si eliminas los buffers estaticos vas a tener la misma implementacion para los dos casos.
Y otras tantas mas, pero estoy con una tablet y es mas complicado escribir... si te speras a septiembre te comento mas detalles si quieres.
Hablando de errores:
strtok modifica la cadena que se le pasa como argumento.
Para que todas las busquedas te devuelvan el mismo resultado tienes que copiar la lista de palabras en otro buffer y lanzar strtok pasando como argumento este segundo buffer.
Cita de: spicecobra en 25 Agosto 2013, 02:52 AMCódigo (c) [Seleccionar]
char *carga(int *x,int y)
{
static char a[1000]; static char b[5000];
if(y==1)
{ while((a[*x]=getchar())!=EOF)
{ ++(*x); };
return a;
}
else
{ while((b[*x]=getchar())!=EOF)
{ ++(*x);};
return b;
};
}
No tiene sentido que unifiques las lecturas en una sola funcion si luego dicha funcion va a tener dos implementaciones diferentes. Ademas en vez de usar buffers estaticos dentro de la función deberias pasarlos como argumentos. Si eliminas los buffers estaticos vas a tener la misma implementacion para los dos casos.
Y otras tantas mas, pero estoy con una tablet y es mas complicado escribir... si te speras a septiembre te comento mas detalles si quieres.
Hablando de errores:
strtok modifica la cadena que se le pasa como argumento.
Para que todas las busquedas te devuelvan el mismo resultado tienes que copiar la lista de palabras en otro buffer y lanzar strtok pasando como argumento este segundo buffer.