Test Foro de elhacker.net SMF 2.1

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

char cadena[100];
cout<<"Introduce cadena"<<endl;
cin>>cadena;

    for(int i=0;i<strlen(cadena);i++)
    {
        if(cadena[i]=="@")
            cout<<"Caracter encontrado"<<endl;
    }


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

char cadena[100], caracter='a';

    cadena[2]=caracter;
Título: Re: Comparar cadena con un caracter ascii
Publicado por: Shell Root en 9 Marzo 2011, 00:27 AM
Lo primero,
  char sArray[4];
  int i = 0;

  sArray[0] = 'h';
  sArray[1] = 'a';
  sArray[2] = 'b';
  sArray[3] = 'c';

  for(i=0; i<strlen(sArray); i++){
    if(sArray[i] == 'a'){
      printf( " Esta en la posicion %i\n", i );
    }
  }

Output:
Código (bash) [Seleccionar]
alex@shellroot:~/Escritorio$ gcc PoC.c
alex@shellroot:~/Escritorio$ ./a.out
Esta en la posicion 1


--

Lo segundo,
 char sArray[2];
 char sCaracter = 'a';

 sArray[0] = 'h';
 sArray[1] = sCaracter;

 printf( "%c\n", sArray[1] );


Output:
Código (bash) [Seleccionar]
alex@shellroot:~/Escritorio$ gcc PoC.c
alex@shellroot:~/Escritorio$ ./a.out
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=='@'