Comparar cadena con un caracter ascii

Iniciado por d00ze13, 9 Marzo 2011, 00:12 AM

0 Miembros y 1 Visitante están viendo este tema.

d00ze13

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;

Shell Root

#1
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
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Akai

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=='@'