Novato pregunton aprende char en if

Mi estimado amigo aquí estoy de nuevo y espero no ser inoportuno, pues aveces se que tal vez las preguntas de un novato pueden llegar a ser tediosas, pero en fin te dijo que cuando yo pregunto es porque no me que otra y llevo rato con la duda, anteriormente a tu respuesta también tenia esta duda, pero me dio un poco de pena preguntar tan seguido y como decimos aquí la seguí pulseando pero nada
Pregunta
Yo dentro del proyecto que estoy asiendo tengo una famosa caja de dialogo como sabes me ayudaste a resolver como asignar una variable de double a un char.
pero bueno otro problema es que dentro de esa caja de dialogo tengo un combobox donde tengo una lista de opciones asignadas a ese combobox
char Lista[MAX_CADENAS][80] =
{
"LAMBERTH NORTE A CRTM(WGS80)",
"LAMBERTH SUR A CRTM(WGS80)",
"CRTM(WGS80)A LAMBERTH NORTE",
"CRTM(WGS80) A LAMBERTH SUR"
};
luego mediante
Datos.sistema[80]=GetDlgItemText(hDlg, ID_COMBOBOX2,Datos.sistema ,80);
Le asigno a la variable Datos. Sistema el valor de una opción del combobox
pero cuando quiero hacer una comparación con if
de la siguiente manera
//veirifacion de sistema
if (Datos.sistema=="LAMBERTH NORTE A CRTM(WGS80)")
{
MessageBox(hDlg,"va ha entrar en el sistema","LAMBERTH NORTE A CRTM(WGS80)", MB_OK);
return 0;
}
Y no entra en el sistema por más que seguido los libros que tengo no entiendo que esta mal
te agradecería me ayudaraas
Gracias
[email protected]

1 Respuesta

Respuesta
1
En esta línea, no lo he probado pero estoy casi seguro de que la asignación sobra...
Datos.sistema[80]=GetDlgItemText(hDlg, ID_COMBOBOX2,Datos.sistema ,80);
Es decir, que simplemente con:
GetDlgItemText(hDlg, ID_COMBOBOX2,Datos.sistema ,80);
... ya debería bastar para asignar el valor del combo a la cadena, puesto que es la propia función la que lo hace. De hecho, dicha asignación es incorrecta, pues debería verse qué devuelve realmente GetDlgItemText, ya que eso lo almacenas en la posición 80 del array... de hecho, como que no debes llegar nunca a ocupar 80 bytes, no pasa nada porque en dicha posición se almacene algún valor raro... que es lo que sucede en tu caso. En fin, que para recoger la cadena del combo sobra la asignación, la llamada bastaría.
Sobre tu duda propiamente dicha, lo que te pasa es que la comparación de cadenas en C se realiza mediante la función strcmp(cad1, cad2), y no con los operadores relacionales. Esto es debido a que el tipo de dato String no existe como tal, y se realiza todo a nivel de arrays de caracteres. Dicha función compara los arrays que le pasas y te devuelve el valor 0 (cero) si son iguales, en caso de que no lo sean te devolverá un valor positivo o negativo que te dice cuál es mayor (no recuerdo quién es quién).
En definitiva, sustituye tu if por el siguiente:
if (strcmp(Datos.sistema,"LAMBERTH NORTE A CRTM(WGS80)")==0)
{
// ...código
}
... así, entrará cuando sean iguales.
Saludos.
P.D.: ... No te sientas mal por preguntar... cuando no tenga tiempo, no contestaré... je, je... ahora, de momento, he podido echarte una mano. De hecho, soy profesor de todo esto en un instituto... así que explicar cosas así no es más que una prolongación de mi trabajo diario.
Sinceramente estoy muy agradecido con usted, y crealo que si algún día bien por aquí a mi país costa rica, las puertas de mi cas estarán abiertas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas