Autor Tema: c (lenguajeC) warning: comparison with string literal results in unspecified beh  (Leído 2432 veces)

davisho95

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Hola, tengo que realizar un código donde el usuario ingrese un numero del 1 al 32 y se imprima el estado correspondiente. El problema es que no me aparece el estado, si me pide el numero y cuando debe imprimir el estado no lo hace muestro captura:


Y aqui esta mi codigo es en lenguaje C y estoy utilizando el Dev C++
Código: [Seleccionar]
#include<stdio.h>

#define MAX_STRLEN 256

int main() {
char estado[MAX_STRLEN][36];
int num;
estado[1] == "Aguascalientes";
estado[2] == "Baja California";
estado[3] == "Baja California Sur";
estado[4] == "Chiapas";
estado[6] == "Chihuahua";
estado[7] == "Ciudad de Mexico";
estado[8] == "Coahuila de Zaragoza";
estado[9] == "Colima";
estado[10] == "Durango";
estado[11] == "Guanajuato";
estado[12] == "Guerrero";
estado[13] == "Hidalgo";
estado[15] == "Jalisco";
estado[16] == "Mexico";
estado[17] == "Michoacan de Ocampo";
estado[20] == "Morelos";
estado[21] == "Nayarit";
estado[22] == "Nuevo Leon";
estado[23] == "Oaxaca";
estado[24] == "Puebla";
estado[25] == "Queretaro";
estado[26] == "Quinta Roo";
estado[27] == "San Luis de Potosi";
estado[28] == "Sinaloa";
estado[29] == "Sonora";
estado[30] == "Tabasco";
estado[31] == "Tamaulipas";
estado[32] == "Tlaxcala";
estado[33] == "Veracruz de Ignacio de la Llave";
estado[34] == "Yucatán";
estado[35] == "Zacatecas";
printf("Dime el numero del estado:\n");
scanf("%i",&num);
switch (num) {
case 1:
printf("El estado es:%s\n",estado[1]);
break;
case 2:
printf("Es estado es:%s\n",estado[2]);
break;
case 3:
printf("El estado es:%s\n",estado[3]);
break;
case 4:
printf("El estado es:%s\n",estado[4]);
break;
case 5:
printf("El estado es:%s\n",estado[5]);
break;
case 6:
printf("El estado es:%s\n",estado[6]);
break;
case 7:
printf("El estado es:%s\n",estado[7]);
break;
case 8:
printf("El estado es:%s\n",estado[8]);
break;
case 9:
printf("El estado es:%s\n",estado[9]);
break;
case 10:
printf("El estado es:%s\n",estado[10]);
break;
case 11:
printf("El estado es:%s\n",estado[11]);
break;
case 12:
printf("El estado es:%s\n",estado[12]);
break;
case 13:
printf("El estado es:%s\n",estado[13]);
break;
case 14:
printf("El estado es:%s\n",estado[14]);
break;
case 15:
printf("El estado es:%s\n",estado[15]);
break;
case 16:
printf("El estado es:%s\n",estado[16]);
break;
case 17:
printf("El estado es:%s\n",estado[17]);
break;
case 18:
printf("El estado es:%s\n",estado[18]);
break;
case 19:
printf("El estado es:%s\n",estado[19]);
break;
case 20:
printf("El estado es:%s\n",estado[20]);
break;
case 21:
printf("El estado es:%s\n",estado[21]);
break;
case 22:
printf("El estado es:%s\n",estado[22]);
break;
case 23:
printf("El estado es:%s\n",estado[23]);
break;
case 24:
printf("El estado es:%s\n",estado[24]);
break;
case 25:
printf("El estado es:%s\n",estado[25]);
break;
case 26:
printf("El estado es:%s\n",estado[26]);
break;
case 27:
printf("El estado es:%s\n",estado[27]);
break;
case 28:
printf("El estado es:%s\n",estado[28]);
break;
case 29:
printf("El estado es:%s\n",estado[29]);
break;
case 30:
printf("El estado es:%s\n",estado[30]);
break;
case 31:
printf("El estado es:%s\n",estado[31]);
break;
case 32:
printf("El estado es:%s\n",estado[32]);
break;
case 33:
printf("El estado es:%s\n",estado[33]);
break;
case 34:
printf("El estado es:%s\n",estado[34]);
break;
case 35:
printf("El estado es:%s\n",estado[35]);
break;
default:
printf("Numero no valido\n");
}
return 0;
}

Soy nuevo en programacion y agredeceria mucho que alguien me explicara mi error.
Gracias
« Última modificación: 10 de Marzo 2019, 20:23 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, veo diferentes cosas extrañas en tu código, por ello te recomendaría que sigas paso a paso el Curso básico de programación lenguaje C desde cero para aclarar los conceptos, lo tienes disponible en https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=82&Itemid=210. Entre las cosas que no me cuadran:

- Declaras un array bidimensional y tratas de usar elementos de un array unidimensional (char estado[MAX_STRLEN][36]; y luego estado[1] == "Aguascalientes";)
- No usas correctamente los índices de los arrays
- No usas correctamente los operadores. = no es lo mismo que ==
- No manejas correctamente los strings con funciones de la librería string.h. La asignación de una cadena de texto a un array de caracteres no se hace como se hace con variables numéricas. estado[1] == "Aguascalientes"; no tiene sentido o al menos no tiene el sentido que se deduce que quiere que tengas.
- No usas formato de código adecuado  ( scanf("%i",&num); )

Fruto de todo ello el programa devuelve numerosos warning del tipo
warning: statement with no effect [-Wunused-value]|
warning: comparison with string literal results in unspecified behavior [-Waddress]

y muestra un comportamiento que no es el esperado. Como te he comentado, siguiendo el curso podrás aclarar todos los conceptos.

Nota: array es lo mismo que arreglo, unas personas usan una forma y otras la otra.

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".