Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: d00ze13 en 9 Marzo 2011, 00:12 am



Título: Comparar cadena con un caracter ascii
Publicado por: d00ze13 en 9 Marzo 2011, 00:12 am
Hola buenas queria saber como se hace para comparar un caracter de una cadena con un caracter ascii, os pongo un ejemplo
Código
  1. char cadena[100];
  2. cout<<"Introduce cadena"<<endl;
  3. cin>>cadena;
  4.  
  5.    for(int i=0;i<strlen(cadena);i++)
  6.    {
  7.        if(cadena[i]=="@")
  8.            cout<<"Caracter encontrado"<<endl;
  9.    }
  10.  

y tambien queria saber si se puede meter en una posicion de una cadena un caracter, ya que he probado y me da error, pongo otro ejemplo
Código
  1. char cadena[100], caracter='a';
  2.  
  3.    cadena[2]=caracter;
  4.  


Título: Re: Comparar cadena con un caracter ascii
Publicado por: Shell Root en 9 Marzo 2011, 00:27 am
Lo primero,
Código
  1.  char sArray[4];
  2.  int i = 0;
  3.  
  4.  sArray[0] = 'h';
  5.  sArray[1] = 'a';
  6.  sArray[2] = 'b';
  7.  sArray[3] = 'c';
  8.  
  9.  for(i=0; i<strlen(sArray); i++){
  10.    if(sArray[i] == 'a'){
  11.      printf( " Esta en la posicion %i\n", i );
  12.    }
  13.  }
Output:
Código
  1. alex@shellroot:~/Escritorio$ gcc PoC.c
  2. alex@shellroot:~/Escritorio$ ./a.out
  3. Esta en la posicion 1
  4.  

--

Lo segundo,
Código
  1.  char sArray[2];
  2.  char sCaracter = 'a';
  3.  
  4.  sArray[0] = 'h';
  5.  sArray[1] = sCaracter;
  6.  
  7.  printf( "%c\n", sArray[1] );

Output:
Código
  1. alex@shellroot:~/Escritorio$ gcc PoC.c
  2. alex@shellroot:~/Escritorio$ ./a.out
  3. a


Título: Re: Comparar cadena con un caracter ascii
Publicado por: Akai en 9 Marzo 2011, 10:30 am
En C y C++, las comillas simples ' ' denotan un caracter, mientras que las dobles " " denotan una cadena.

No es lo mismo, comparar en tu código

cadena=="@" que en realidad, lo estás comparando con la siguiente cadena : "@\0"

que

cadena=='@'