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.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 9
typedef struct
{
char*prefijo;
int exponente;
}prefijos[N]={"femto",-15,"pico",-12,"nano",-9,"micro",-6,"mili",-3,"kilo",3,"mega",6,"giga",9,"tera",12};
int main()
{
int i;
for(i=0;i<N;i++)
{
printf("%s * %d\n",prefijos[i].prefijo,prefijos[i].exponente);
}
return 0;
}
· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex
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
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:
struct {
char* prefijo;
int exponente;
} prefijos[N] = {{"femto", -15},
{"pico", -12},
{"nano", -9},
{"micro", -6},
{"mili", -3},
{"kilo", 3},
{"mega", 6},
{"giga", 9},
{"tera", 12}};