• Lunes 29 de Abril de 2024, 16:01

Autor Tema:  Buscar un caracter!!!  (Leído 1831 veces)

Christian Davis

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Buscar un caracter!!!
« en: Martes 2 de Septiembre de 2008, 10:16 »
0
HOLA!!! mi pregunta es la siguiente, ¿Como hago para escanear una cadena en busca de un caracter especifico?
yo se que eso es muy facil pero el problema es que nesecito escanear la cadena en busca de un caracter y si se repite marcar un error, que indique que el caracter esta repetido y que la cadena no es valida, por ejemplo:

#include "stdio.h"
#include "conio.h"
#incluide "string.h"

void main(void)
{
 char str = "ChrisDavis", *ptr;
 char chr = 's', *ptr1;
 int cont;

 clrscr();
 ptr = strchr(str, chr); //aqui escanea la cadena en busca del caracter
 /*pero solo me indica la "s" del final de Chris mas no la otra */
  *otra opcion es strtok*/
 ptr1 = strtok(str, chr);
 if(ptr1)
 {
   printf("ptr1 = %sn", ptr1);
   getch();
   /*aqui solo corta en donde encuentra la primera "s"
    *aqui es donde empieza el problema, como hacer para que escanie la otra parte de la cadena
    *y así poder marcar un error de caracter repetido
  }                      
 ptr2 = strtok(NULL, "s");
 if(ptr2)
 {
   printf("ptr2 ? %sn, ptr2) //aqui solo corta otra parte de la cadena  
   getch();
 }
}
Espero y alguien pueda ayudarme, muchas GRACIAS!!!

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Buscar un caracter!!!
« Respuesta #1 en: Martes 2 de Septiembre de 2008, 10:56 »
0
strchr. Si te devuelve NULL (0) la primera llamada quiere decir que no esta el caracter ni una vez en la cadena, de lo contrario en la siguiente llamada usas como parametro de cadena el resultado de la primera mas uno (tenes codigo de ejemplo en el enlace) sino te devuelve NULL entonces esta al menos dos veces.

No te hace falta ninguna otra funcion y strchr te devuelve un puntero al primer caracter encontrado desde el puntero a cadena que le pases, en ChrisDavis te devuelve la posicion resaltada en negrita y podes encontrar la ultima s llamando a strchr con el valor devuelto mas uno.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Christian Davis

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Buscar un caracter!!!
« Respuesta #2 en: Miércoles 3 de Septiembre de 2008, 06:50 »
0
HOLA!!! y gracias por la ayuda, pero hise otro programa mucho mejor que me indica el numero de caracteres que estoy buscando algo asi:

for(cont = 0; cont < strlen(cadena); cont++)
 {
   if(chr == cadena[cont]) //donde chr = a un caracter
    {
      flag++;
    }
 }
if(flag > 1)
 printf("ERRORn");

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Buscar un caracter!!!
« Respuesta #3 en: Miércoles 3 de Septiembre de 2008, 08:13 »
0
En definitiva es lo mismo ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.