elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  cual es el error en este codigo fuente??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: cual es el error en este codigo fuente??  (Leído 1,783 veces)
fedemaxrul

Desconectado Desconectado

Mensajes: 9


Ver Perfil
cual es el error en este codigo fuente??
« en: 11 Abril 2017, 17:28 pm »

la idea es un programa con un array de 9 estructuras, cada una con un puntero a un prefijo metrico y una variable de tipo entero, cuyo valor es el exponente correspondiente para ese prefijo metrico.


 
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define N 9
  5. typedef struct
  6. {
  7.    char*prefijo;
  8.    int exponente;
  9. }prefijos[N]={"femto",-15,"pico",-12,"nano",-9,"micro",-6,"mili",-3,"kilo",3,"mega",6,"giga",9,"tera",12};
  10. int main()
  11. {
  12.    int i;
  13.    for(i=0;i<N;i++)
  14.    {
  15.        printf("%s * %d\n",prefijos[i].prefijo,prefijos[i].exponente);
  16.    }
  17.    return 0;
  18. }
  19.  


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex


« Última modificación: 11 Abril 2017, 17:32 pm por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: cual es el error en este codigo fuente??
« Respuesta #1 en: 11 Abril 2017, 17:33 pm »

el char no está siendo declarado estaticamente (durante la creación de la variable) sino dinamicamente, así que el char no puede ser solo *, tienes que alojarle un espacio en memoria


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: cual es el error en este codigo fuente??
« Respuesta #2 en: 11 Abril 2017, 18:33 pm »

Vale, confundes dos cosas: La definición de tipos con typedef y la definición de un array de structs en la misma declaración.

Tu has escrito:
typedef struct { ... }

Esto después de la última llave espera un identificador para un tipo de dato. Sin embargo dices:
} prefijos[N]=...

Con eso lo que quieres es definir una variable array de structs. Esta construcción no puede ir junta.

En tu caso lo que debes hacer es quitar la palabra clave typedef y dejar

struct { ... } prefijos[N]=...

Con esto tendrás un array de N estructuras anónimas (no podrás usar ese tipo en ningún otro sitio del programa para crear más datos).

Pero aún así tienes otro problema:
Cuando inicializas el array haces: prefijos[N]={ ... }.

Esto está bien para un array de elementos simples, pero estás inicializando estructuras de dos elementos, así que deberías hacerlo así:

prefijos[N]={ {elem1, elem2}, {elem1, elem2}, ... , {elem1, elem2} };

En conjunto la nueva definición es esta:
Código
  1. struct {
  2.    char* prefijo;
  3.    int exponente;
  4. } prefijos[N] = {{"femto",  -15},
  5.                 {"pico",   -12},
  6.                 {"nano",   -9},
  7.                 {"micro",  -6},
  8.                 {"mili",   -3},
  9.                 {"kilo",   3},
  10.                 {"mega",   6},
  11.                 {"giga",   9},
  12.                 {"tera",   12}};
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines