ho scritto ovvio solo xke passo piu tempo su questo blog a domandare che a fare programmi..cmq l'ho organizzato cosi
file main
extern struct voce_menu lista;
main(){
int scelta;
int loop=0;
struct voce_menu *c;
while(loop==0){
for(c=lista;c->msg!=NULL;c++)
printf("%s",c->msg);
printf("\n scegliere opzione:");
scanf("%d",&scelta);
if(scelta==1)
z++;
if(scelta==0)loop=1;
else
(*lista[scelta-1].fun)();
}
system("PAUSE"); }
file con funzioni e strutture:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
void ins(void), visualizza(void);
extern int z=0;
struct modello{
int codice;
char descrizione[30];
int anno;};
struct automobile{char marca[25];
struct modello mod;
int vendute;};
struct automobile car[20];
struct voce_menu{
char*msg;
void(*fun)(void);};
struct voce_menu lista[]={" 1.Inserisci modello \n",ins,
" 2.Visualizza automobili \n",visualizza,
" 0.Fine \n",NULL,NULL,NULL};
void ins(void){
static int pos=0;
if(pos>=20){
printf("Non c'è spazio per inserire");}
else{
printf("Inserisci marca:");
scanf("%s",car[pos].marca);
printf("Inserisci descrizione:");
scanf("%s",car[pos].mod.descrizione);
printf("Inserisci codice:");
scanf("%d",&car[pos].mod.codice);
printf("Inserisci anno:");
scanf("%d",&car[pos].mod.anno);
printf("Inserisci vendute:");
scanf("%d",&car[pos].vendute);
pos++;}}
void visualizza(void){
int i;
struct automobile *p=&car[0];
for(i=0;i<z;i++){
printf("Marca: %s \n",p->marca);
printf("Modello descrizione: %s \n",p->mod.descrizione);
printf("Modello codice: %d \n",p->mod.codice);
printf("Modello anno: %d \n",p->mod.anno);
printf("Venduti: %d \n\n",p->vendute);
*p++;}}
l'errore me lo da poiche nn riconosce la printf,la scanf e il null nel file main...
|