/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

problema al leer primer caracter y compararlo con otro

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
aLiSH



Registrado: 26 Oct 2007
Mensajes: 2

MensajePublicado: 26/10/2007 2:37 am
Título: problema al leer primer caracter y compararlo con otro

Hola, estoy empezando con c y c++ y tengo un problema que no consigo resolver. Quiero leer el primer carácter de un fichero y si es igual a "!" realizar otras operaciones.

Código:
      char firstch;
      FILE *input = fopen(argv[i],"r");
      firstch=getc(input);
      cout << "What gets: " << firstch << endl;
      cout << "What gets: " << &firstch << endl;

      if (&firstch == "!") {
          cout << "First char equal to !" << endl;
      }
      if (fclose(input)!=0) {
        printf("Error closing file\n");
      }


Estoy haciendo pruebas leyendo 3 ficheros, dos de ellos comienzan con ">" y otro con "!". Los resultados son estos:

What gets: >
What gets: >l

What gets: >
What gets: >l

What gets: !
What gets: !l

No detecta el último fichero que comienza con "!". Cuando cambio la comparacion de "if (&firstch == "!") {" por "if (firstch == "!") {" me aparece el siguiente error de compilación:

ISO C++ prohíbe la comparación entre puntero y entero
:: === Build finished: 1 errors, 0 warnings ===

Mi pregunta es cómo debo comparar el valor que lee el fichero con el carácter "!" para poder hacer otras operaciones? He leido manuales y cursos sobre C y C++ pero no entiendo muy bien porque no es posible ese tipo de comparaciones.

Un saludo y gracias de antemano.
Volver arriba
aLiSH



Registrado: 26 Oct 2007
Mensajes: 2

MensajePublicado: 26/10/2007 3:05 am
Título:

lo acabo de solucionar. Eran las comillas del ! en la comparacion, debe ser así:

if (firstch == '!') {
Volver arriba
v0x1



Registrado: 20 Oct 2007
Mensajes: 13

MensajePublicado: 26/10/2007 4:36 am
Título:

te recomendaria que mejor utilizes la libreria string.h y utilizes la funcion strcmp , aqui un ejemplo de como utilizarla

if((strcmp letra, letrab)==0)
{
cout << "Son iguales" << endl;
}
else
cout << "Son diferentes" << endl;

Porque asi como lo estas haciendo segun tengo entendido solo estas comparando el espacio de memoria y no el caracter en si.

Saludos
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com