Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Buscar carácter en una cadena

Estas en el tema de Buscar carácter en una cadena en el foro de C/C++ en Foros del Web. He hecho este programa (es un ejercicio de un curso) para buscar un carácter en una cadena de caracteres, y me pasa algo que me ...
  #1 (permalink)  
Antiguo 02/08/2008, 11:41
 
Fecha de Ingreso: mayo-2006
Ubicación: Vigo
Mensajes: 34
Antigüedad: 18 años
Puntos: 0
Buscar carácter en una cadena

He hecho este programa (es un ejercicio de un curso) para buscar un carácter en una cadena de caracteres, y me pasa algo que me pasó mas veces al trabajar con cadenas, que al pasar un bucle funciona si al pasar la primera vez se cumple la condición pero si es más adelante no, aunque no da error. Me explico. Tengo el siguiente código:

Código:
#include <stdio.h>

#define TAM 50

char string[TAM];
char letra;

int BuscaCaracter(char*,char);

int main (void)
{
    printf("Introduce una cadena de caracteres: ");
    scanf("%s",string);
    printf("\nIntroduce caracter a buscar: ");
    fflush(stdin); scanf("%c",&letra);
    if ( BuscaCaracter(string,letra) != -1 ) { printf("La letra esta en la posicion %d de la cadena.\n",BuscaCaracter(string,letra)); } else { printf("Letra no encontrada.\n"); }
    return 0;
}

int BuscaCaracter (char *cadena, char caracter)
{
    for (int i=0;i<TAM;i++)
    { 
        while ( string[i] != '\0' ) { if ( string[i] == caracter ) { return i+1; } }
    }
}
Introduzco la cadena "murcielago". Pues bien, al buscar el caracter, si busco la "m" me dice que esta en la posicion 1 de la cadena, pero no me dice nada si busco la "u", o la "o", por ejemplo.

Igualmente, me gustaría no declarar la cadena como string[50], ya que estoy fijando un tamaño máximo y no quiero. Pero si declaro char string[] no me compila porque dice que no se conoce el tamaño de la cadena, y si hago char *string compila pero me da error en tiempo de ejecución cuando introduzco la cadena por el teclado.
  #2 (permalink)  
Antiguo 02/08/2008, 12:11
Avatar de WaRc3L  
Fecha de Ingreso: agosto-2008
Ubicación: My House
Mensajes: 89
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Buscar carácter en una cadena

Buenas! creo que el error esta aqui:
Código:
for (int i=0;i<TAM;i++)
    { 
        while ( string[i] != '\0' ) 
        { 
             if ( string[i] == caracter ) 
             { 
                 return i+1;  // Solo subes quando encuentra el primer caracter, y por eso
                                    // no encuentra los otros caracteres, a mi me funciono
             } 
             i++ // es igual a i = i + 1 
        }
    }
Saludos. Si tienes una duda postea
  #3 (permalink)  
Antiguo 02/08/2008, 14:02
 
Fecha de Ingreso: mayo-2006
Ubicación: Vigo
Mensajes: 34
Antigüedad: 18 años
Puntos: 0
Respuesta: Buscar carácter en una cadena

Ya he entendido, gracias. Pensé en meter el for dentro del while en vez de meter el while dentro del for, pero al final hice así y olvidé ese detalle, como el siguiente caracter no es el '\0' pues se queda pillado en el while y no vuelve a repetir todo el for. Muchas gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:51.