[c]subcadenas porque no funciona?

Iniciado por daryo, 21 Junio 2013, 21:28 PM

0 Miembros y 2 Visitantes están viendo este tema.

daryo

la salida es :
5
-1
-1
alguna idea ?


#include <stdio.h>
#include <string.h>

int findstr(char *cadena, char *subcadena, int pos_ini)
{
int i, j;
for(i=pos_ini; cadena[i]!='\0'; i++)
for(j=0; subcadena!='\0' && cadena[i+j]==subcadena[j]; j++)
if(subcadena[j+1]=='\0')
return i+1;
return -1;
}

int main()
{
char cadena[]="c a calar calar comer calar garbanzos";
char subcadena[]= "cala";

printf("%i\n", findstr(cadena, subcadena, 0));
strcpy(subcadena, "calar");
printf("%i\n", findstr(cadena, subcadena, 0));
printf("%i\n", findstr(cadena, subcadena, findstr(cadena, subcadena, 0)));

return 0;
}
buenas

kmilinh0


0xDani

subcadena!='\0'

Qué es eso? Ni siquiera te lanza un warning?
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

amchacon

Cita de: 0xDani en 21 Junio 2013, 21:50 PM
subcadena!='\0'

Qué es eso? Ni siquiera te lanza un warning?
Es legal, lo que hace comparar el valor del puntero char con el ASCII de '\0'.

Aunque evidentemente, no es eso lo que quería hacer. Supongo que se le ha olvidado el [j]
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

daryo

siendo sinceros es un code que me pasaron no es ni siquiera hecho por mi aun asi me parecio raro que no funcionara por cierto 0xdani es mas estricto que el mismo compilador :P
buenas

0xDani

Cita de: amchacon en 21 Junio 2013, 23:14 PM
Es legal, lo que hace comparar el valor del puntero char con el ASCII de '\0'.

Aunque evidentemente, no es eso lo que quería hacer. Supongo que se le ha olvidado el [j]

Claro que es legal, por eso le he preguntado si no le lanza un warning, por ejemplo de comparación entre puntero y entero.

Cita de: daryo en 21 Junio 2013, 23:31 PM
por cierto 0xdani es mas estricto que el mismo compilador :P

Pues debe ser poco estricto el compilador xD
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

amchacon

#6
Cita de: 0xDani en 22 Junio 2013, 00:17 AMClaro que es legal, por eso le he preguntado si no le lanza un warning, por ejemplo de comparación entre puntero y entero.
No da warning porque es una comparación con 0, y esa comparación si tiene sentido (para comprobar si es un puntero válido).
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar