Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/07/2010, 10:48
minette1988
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
buscar una subcadena dentro de una cadena

Hola, la siguiente función cuenta los caracteres que hay en una subcadena:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(){
  6.          char cad1[100];
  7.          char cad2[50];
  8.          int subcadena;
  9.  
  10.          printf("Introduce una cadena: ");
  11.          scanf("%99s", cad1);
  12.  
  13.          printf("Introduce la subcadena a buscar: ");
  14.          scanf("%49s", cad2);  
  15.  
  16.          subcadena = buscar_subcadena(cad1, cad2);
  17.  
  18.          printf("La subcadena tiene %d caracteres.\n", subcadena);
  19. }
  20. int buscar_subcadena(char cad1[], char cad2[]){
  21.          int i=0;
  22.          int j, k;
  23.          int encontrado = 0;
  24.  
  25.          while((cad1[i] != '\0') && (encontrado != 1)){
  26.                 j=0;
  27.                 k=i;
  28.  
  29.                 while((cad1[k]==cad2[j]) && (cad2[j] != '\0')){
  30.                      k++;
  31.                      j++;
  32.                 }
  33.                 if(cad2[j]=='\0'){
  34.                     encontrado = 1;
  35.                 }
  36.                 else{
  37.                     i++;
  38.                 }
  39.          }
  40.          if(encontrado == 0){
  41.                    i = -1;
  42.          }
  43.          return(i);
  44. }

Cuando lo compilo no me sale bien.
Introduce una cadena: papel
Introduce la subcadena a buscar: pap
La subcadena tiene 0 caracteres.
¿Por qué no cuenta los caracteres de la subcadena?