Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/08/2008, 11:41
Antonio92
 
Fecha de Ingreso: mayo-2006
Ubicación: Vigo
Mensajes: 34
Antigüedad: 18 años, 8 meses
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.