06/10/10 21:07
mago85
Ciao a tutti, sono MaGo85 e sono nuovo del forum.
Ne approfitto subito per porvi una questione per me irrisolvibile.
Sto da poco affrontando l'annosa questione dei puntatori, con conseguente
allocazione di memoria ecc.
Ok, a questo aggiungiamoci le strutture e cosa ottengo ? Un po' di confusione...
Allora per testare le mie competenze, ho cercato di realizzare un semplice programmino che forniti dei dati in input, li memorizzi una struttura e poi stampi a video un resoconto del tutto.
Fatto ! Sembra funzionare tutto correttamente, ma al momento di stampare a video il resoconto, i valori che mi vengono stampati corrispondono tutti all'ultimo valore digitato...
Non riesco a capire cosa ci sia che non va
Vi riporto di seguito il codice
Grazie per la pazienza se siete arrivati fino a qui...
Ne approfitto subito per porvi una questione per me irrisolvibile.
Sto da poco affrontando l'annosa questione dei puntatori, con conseguente
allocazione di memoria ecc.
Ok, a questo aggiungiamoci le strutture e cosa ottengo ? Un po' di confusione...
Allora per testare le mie competenze, ho cercato di realizzare un semplice programmino che forniti dei dati in input, li memorizzi una struttura e poi stampi a video un resoconto del tutto.
Fatto ! Sembra funzionare tutto correttamente, ma al momento di stampare a video il resoconto, i valori che mi vengono stampati corrispondono tutti all'ultimo valore digitato...
Non riesco a capire cosa ci sia che non va
Vi riporto di seguito il codice
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct option { char *sedili; char *volante; }optionals; typedef struct car { char *interni; char *esterni; char *cerchi; optionals opt; }arg; void inizializza(arg *macchina, int nmacchine); void inseriscidati(arg *macchina, int nmacchine); void stampadati(arg *macchina, int nmacchine); int main(void){ int macchine; arg * giulietta; printf("Inserisci il numero di Macchina da configurare: "); scanf("%d", &macchine); giulietta =(arg *) malloc(sizeof(arg)*macchine); inizializza(giulietta, macchine); inseriscidati(giulietta, macchine); stampadati(giulietta, macchine); free(giulietta); return 0; } //Funzione per inizializzare la struttura con valori vuoti void inizializza(arg *macchina, int nmacchine){ int i=0; for (i=0;i<nmacchine;i++){ (macchina+i)->interni = 'Ciao a tutti, sono MaGo85 e sono nuovo del forum.
Ne approfitto subito per porvi una questione per me irrisolvibile.
Sto da poco affrontando l'annosa questione dei puntatori, con conseguente
allocazione di memoria ecc.
Ok, a questo aggiungiamoci le strutture e cosa ottengo ? Un po' di confusione...
Allora per testare le mie competenze, ho cercato di realizzare un semplice programmino che forniti dei dati in input, li memorizzi una struttura e poi stampi a video un resoconto del tutto.
Fatto ! Sembra funzionare tutto correttamente, ma al momento di stampare a video il resoconto, i valori che mi vengono stampati corrispondono tutti all'ultimo valore digitato...
Non riesco a capire cosa ci sia che non va
Vi riporto di seguito il codice
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct option { char *sedili; char *volante; }optionals; typedef struct car { char *interni; char *esterni; char *cerchi; optionals opt; }arg; void inizializza(arg *macchina, int nmacchine); void inseriscidati(arg *macchina, int nmacchine); void stampadati(arg *macchina, int nmacchine); int main(void){ int macchine; arg * giulietta; printf("Inserisci il numero di Macchina da configurare: "); scanf("%d", &macchine); giulietta =(arg *) malloc(sizeof(arg)*macchine); inizializza(giulietta, macchine); inseriscidati(giulietta, macchine); stampadati(giulietta, macchine); free(giulietta); return 0; } //Funzione per inizializzare la struttura con valori vuoti void inizializza(arg *macchina, int nmacchine){ int i=0; for (i=0;i<nmacchine;i++){ (macchina+i)->interni = '{parsed_message}'; (macchina+i)->esterni = '{parsed_message}'; (macchina+i)->cerchi = '{parsed_message}'; (macchina+i)->opt.sedili = '{parsed_message}'; (macchina+i)->opt.volante = '{parsed_message}'; } } //Funzione per memorizzare i dati nella struttura void inseriscidati(arg *macchina, int nmacchine){ int i=0; char *temp; for(i=0;i<nmacchine;i++){ printf("\nMacchina %d:", i+1); temp = (char *) malloc(sizeof(char)); printf("\nInserisci il tipo di interno: "); scanf("%s",temp); (macchina+i)->interni = temp; printf("\n%s", (macchina+i)->interni); printf("\nInserisci il colore degli esterni: "); scanf("%s",temp); (macchina+i)->esterni = temp; printf("\nInserisci il tipo di cherchi: "); scanf("%s",temp); (macchina+i)->cerchi = temp; printf("\nOPTIONALS:"); printf("\nInserisci il colore dei sedili: "); scanf("%s",temp); (macchina+i)->opt.sedili = temp; printf("\nInserisci la tipologia di volante: "); scanf("%s",temp); (macchina+i)->opt.volante = temp; free(temp); } } //Funzione che stampa a video i dati della struttura void stampadati(arg *macchina, int nmacchine){ int i=0; printf("\n\nCONFIGURAZIONI DISPONIBILI:"); for(i=0;i<nmacchine;i++){ printf("\n\nGiulietta %d", i+1); printf("\nInterni: %s", (macchina+i)->interni); printf("\nEsterni: %s", (macchina+i)->esterni); printf("\nCerchi: %s", (macchina+i)->cerchi); printf("\nOPTIONALS"); printf("\nInterni: %s", (macchina+i)->opt.sedili); printf("\nInterni: %s", (macchina+i)->opt.volante); } }
Grazie per la pazienza se siete arrivati fino a qui...
'; (macchina+i)->esterni = 'Ciao a tutti, sono MaGo85 e sono nuovo del forum.
Ne approfitto subito per porvi una questione per me irrisolvibile.
Sto da poco affrontando l'annosa questione dei puntatori, con conseguente
allocazione di memoria ecc.
Ok, a questo aggiungiamoci le strutture e cosa ottengo ? Un po' di confusione...
Allora per testare le mie competenze, ho cercato di realizzare un semplice programmino che forniti dei dati in input, li memorizzi una struttura e poi stampi a video un resoconto del tutto.
Fatto ! Sembra funzionare tutto correttamente, ma al momento di stampare a video il resoconto, i valori che mi vengono stampati corrispondono tutti all'ultimo valore digitato...
Non riesco a capire cosa ci sia che non va
Vi riporto di seguito il codice
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct option { char *sedili; char *volante; }optionals; typedef struct car { char *interni; char *esterni; char *cerchi; optionals opt; }arg; void inizializza(arg *macchina, int nmacchine); void inseriscidati(arg *macchina, int nmacchine); void stampadati(arg *macchina, int nmacchine); int main(void){ int macchine; arg * giulietta; printf("Inserisci il numero di Macchina da configurare: "); scanf("%d", &macchine); giulietta =(arg *) malloc(sizeof(arg)*macchine); inizializza(giulietta, macchine); inseriscidati(giulietta, macchine); stampadati(giulietta, macchine); free(giulietta); return 0; } //Funzione per inizializzare la struttura con valori vuoti void inizializza(arg *macchina, int nmacchine){ int i=0; for (i=0;i<nmacchine;i++){ (macchina+i)->interni = '{parsed_message}'; (macchina+i)->esterni = '{parsed_message}'; (macchina+i)->cerchi = '{parsed_message}'; (macchina+i)->opt.sedili = '{parsed_message}'; (macchina+i)->opt.volante = '{parsed_message}'; } } //Funzione per memorizzare i dati nella struttura void inseriscidati(arg *macchina, int nmacchine){ int i=0; char *temp; for(i=0;i<nmacchine;i++){ printf("\nMacchina %d:", i+1); temp = (char *) malloc(sizeof(char)); printf("\nInserisci il tipo di interno: "); scanf("%s",temp); (macchina+i)->interni = temp; printf("\n%s", (macchina+i)->interni); printf("\nInserisci il colore degli esterni: "); scanf("%s",temp); (macchina+i)->esterni = temp; printf("\nInserisci il tipo di cherchi: "); scanf("%s",temp); (macchina+i)->cerchi = temp; printf("\nOPTIONALS:"); printf("\nInserisci il colore dei sedili: "); scanf("%s",temp); (macchina+i)->opt.sedili = temp; printf("\nInserisci la tipologia di volante: "); scanf("%s",temp); (macchina+i)->opt.volante = temp; free(temp); } } //Funzione che stampa a video i dati della struttura void stampadati(arg *macchina, int nmacchine){ int i=0; printf("\n\nCONFIGURAZIONI DISPONIBILI:"); for(i=0;i<nmacchine;i++){ printf("\n\nGiulietta %d", i+1); printf("\nInterni: %s", (macchina+i)->interni); printf("\nEsterni: %s", (macchina+i)->esterni); printf("\nCerchi: %s", (macchina+i)->cerchi); printf("\nOPTIONALS"); printf("\nInterni: %s", (macchina+i)->opt.sedili); printf("\nInterni: %s", (macchina+i)->opt.volante); } }
Grazie per la pazienza se siete arrivati fino a qui...
'; (macchina+i)->cerchi = 'Ciao a tutti, sono MaGo85 e sono nuovo del forum.
Ne approfitto subito per porvi una questione per me irrisolvibile.
Sto da poco affrontando l'annosa questione dei puntatori, con conseguente
allocazione di memoria ecc.
Ok, a questo aggiungiamoci le strutture e cosa ottengo ? Un po' di confusione...
Allora per testare le mie competenze, ho cercato di realizzare un semplice programmino che forniti dei dati in input, li memorizzi una struttura e poi stampi a video un resoconto del tutto.
Fatto ! Sembra funzionare tutto correttamente, ma al momento di stampare a video il resoconto, i valori che mi vengono stampati corrispondono tutti all'ultimo valore digitato...
Non riesco a capire cosa ci sia che non va
Vi riporto di seguito il codice
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct option { char *sedili; char *volante; }optionals; typedef struct car { char *interni; char *esterni; char *cerchi; optionals opt; }arg; void inizializza(arg *macchina, int nmacchine); void inseriscidati(arg *macchina, int nmacchine); void stampadati(arg *macchina, int nmacchine); int main(void){ int macchine; arg * giulietta; printf("Inserisci il numero di Macchina da configurare: "); scanf("%d", &macchine); giulietta =(arg *) malloc(sizeof(arg)*macchine); inizializza(giulietta, macchine); inseriscidati(giulietta, macchine); stampadati(giulietta, macchine); free(giulietta); return 0; } //Funzione per inizializzare la struttura con valori vuoti void inizializza(arg *macchina, int nmacchine){ int i=0; for (i=0;i<nmacchine;i++){ (macchina+i)->interni = '{parsed_message}'; (macchina+i)->esterni = '{parsed_message}'; (macchina+i)->cerchi = '{parsed_message}'; (macchina+i)->opt.sedili = '{parsed_message}'; (macchina+i)->opt.volante = '{parsed_message}'; } } //Funzione per memorizzare i dati nella struttura void inseriscidati(arg *macchina, int nmacchine){ int i=0; char *temp; for(i=0;i<nmacchine;i++){ printf("\nMacchina %d:", i+1); temp = (char *) malloc(sizeof(char)); printf("\nInserisci il tipo di interno: "); scanf("%s",temp); (macchina+i)->interni = temp; printf("\n%s", (macchina+i)->interni); printf("\nInserisci il colore degli esterni: "); scanf("%s",temp); (macchina+i)->esterni = temp; printf("\nInserisci il tipo di cherchi: "); scanf("%s",temp); (macchina+i)->cerchi = temp; printf("\nOPTIONALS:"); printf("\nInserisci il colore dei sedili: "); scanf("%s",temp); (macchina+i)->opt.sedili = temp; printf("\nInserisci la tipologia di volante: "); scanf("%s",temp); (macchina+i)->opt.volante = temp; free(temp); } } //Funzione che stampa a video i dati della struttura void stampadati(arg *macchina, int nmacchine){ int i=0; printf("\n\nCONFIGURAZIONI DISPONIBILI:"); for(i=0;i<nmacchine;i++){ printf("\n\nGiulietta %d", i+1); printf("\nInterni: %s", (macchina+i)->interni); printf("\nEsterni: %s", (macchina+i)->esterni); printf("\nCerchi: %s", (macchina+i)->cerchi); printf("\nOPTIONALS"); printf("\nInterni: %s", (macchina+i)->opt.sedili); printf("\nInterni: %s", (macchina+i)->opt.volante); } }
Grazie per la pazienza se siete arrivati fino a qui...
'; (macchina+i)->opt.sedili = 'Ciao a tutti, sono MaGo85 e sono nuovo del forum.
Ne approfitto subito per porvi una questione per me irrisolvibile.
Sto da poco affrontando l'annosa questione dei puntatori, con conseguente
allocazione di memoria ecc.
Ok, a questo aggiungiamoci le strutture e cosa ottengo ? Un po' di confusione...
Allora per testare le mie competenze, ho cercato di realizzare un semplice programmino che forniti dei dati in input, li memorizzi una struttura e poi stampi a video un resoconto del tutto.
Fatto ! Sembra funzionare tutto correttamente, ma al momento di stampare a video il resoconto, i valori che mi vengono stampati corrispondono tutti all'ultimo valore digitato...
Non riesco a capire cosa ci sia che non va
Vi riporto di seguito il codice
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct option { char *sedili; char *volante; }optionals; typedef struct car { char *interni; char *esterni; char *cerchi; optionals opt; }arg; void inizializza(arg *macchina, int nmacchine); void inseriscidati(arg *macchina, int nmacchine); void stampadati(arg *macchina, int nmacchine); int main(void){ int macchine; arg * giulietta; printf("Inserisci il numero di Macchina da configurare: "); scanf("%d", &macchine); giulietta =(arg *) malloc(sizeof(arg)*macchine); inizializza(giulietta, macchine); inseriscidati(giulietta, macchine); stampadati(giulietta, macchine); free(giulietta); return 0; } //Funzione per inizializzare la struttura con valori vuoti void inizializza(arg *macchina, int nmacchine){ int i=0; for (i=0;i<nmacchine;i++){ (macchina+i)->interni = '{parsed_message}'; (macchina+i)->esterni = '{parsed_message}'; (macchina+i)->cerchi = '{parsed_message}'; (macchina+i)->opt.sedili = '{parsed_message}'; (macchina+i)->opt.volante = '{parsed_message}'; } } //Funzione per memorizzare i dati nella struttura void inseriscidati(arg *macchina, int nmacchine){ int i=0; char *temp; for(i=0;i<nmacchine;i++){ printf("\nMacchina %d:", i+1); temp = (char *) malloc(sizeof(char)); printf("\nInserisci il tipo di interno: "); scanf("%s",temp); (macchina+i)->interni = temp; printf("\n%s", (macchina+i)->interni); printf("\nInserisci il colore degli esterni: "); scanf("%s",temp); (macchina+i)->esterni = temp; printf("\nInserisci il tipo di cherchi: "); scanf("%s",temp); (macchina+i)->cerchi = temp; printf("\nOPTIONALS:"); printf("\nInserisci il colore dei sedili: "); scanf("%s",temp); (macchina+i)->opt.sedili = temp; printf("\nInserisci la tipologia di volante: "); scanf("%s",temp); (macchina+i)->opt.volante = temp; free(temp); } } //Funzione che stampa a video i dati della struttura void stampadati(arg *macchina, int nmacchine){ int i=0; printf("\n\nCONFIGURAZIONI DISPONIBILI:"); for(i=0;i<nmacchine;i++){ printf("\n\nGiulietta %d", i+1); printf("\nInterni: %s", (macchina+i)->interni); printf("\nEsterni: %s", (macchina+i)->esterni); printf("\nCerchi: %s", (macchina+i)->cerchi); printf("\nOPTIONALS"); printf("\nInterni: %s", (macchina+i)->opt.sedili); printf("\nInterni: %s", (macchina+i)->opt.volante); } }
Grazie per la pazienza se siete arrivati fino a qui...
'; (macchina+i)->opt.volante = 'Ciao a tutti, sono MaGo85 e sono nuovo del forum.
Ne approfitto subito per porvi una questione per me irrisolvibile.
Sto da poco affrontando l'annosa questione dei puntatori, con conseguente
allocazione di memoria ecc.
Ok, a questo aggiungiamoci le strutture e cosa ottengo ? Un po' di confusione...
Allora per testare le mie competenze, ho cercato di realizzare un semplice programmino che forniti dei dati in input, li memorizzi una struttura e poi stampi a video un resoconto del tutto.
Fatto ! Sembra funzionare tutto correttamente, ma al momento di stampare a video il resoconto, i valori che mi vengono stampati corrispondono tutti all'ultimo valore digitato...
Non riesco a capire cosa ci sia che non va
Vi riporto di seguito il codice
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct option { char *sedili; char *volante; }optionals; typedef struct car { char *interni; char *esterni; char *cerchi; optionals opt; }arg; void inizializza(arg *macchina, int nmacchine); void inseriscidati(arg *macchina, int nmacchine); void stampadati(arg *macchina, int nmacchine); int main(void){ int macchine; arg * giulietta; printf("Inserisci il numero di Macchina da configurare: "); scanf("%d", &macchine); giulietta =(arg *) malloc(sizeof(arg)*macchine); inizializza(giulietta, macchine); inseriscidati(giulietta, macchine); stampadati(giulietta, macchine); free(giulietta); return 0; } //Funzione per inizializzare la struttura con valori vuoti void inizializza(arg *macchina, int nmacchine){ int i=0; for (i=0;i<nmacchine;i++){ (macchina+i)->interni = '{parsed_message}'; (macchina+i)->esterni = '{parsed_message}'; (macchina+i)->cerchi = '{parsed_message}'; (macchina+i)->opt.sedili = '{parsed_message}'; (macchina+i)->opt.volante = '{parsed_message}'; } } //Funzione per memorizzare i dati nella struttura void inseriscidati(arg *macchina, int nmacchine){ int i=0; char *temp; for(i=0;i<nmacchine;i++){ printf("\nMacchina %d:", i+1); temp = (char *) malloc(sizeof(char)); printf("\nInserisci il tipo di interno: "); scanf("%s",temp); (macchina+i)->interni = temp; printf("\n%s", (macchina+i)->interni); printf("\nInserisci il colore degli esterni: "); scanf("%s",temp); (macchina+i)->esterni = temp; printf("\nInserisci il tipo di cherchi: "); scanf("%s",temp); (macchina+i)->cerchi = temp; printf("\nOPTIONALS:"); printf("\nInserisci il colore dei sedili: "); scanf("%s",temp); (macchina+i)->opt.sedili = temp; printf("\nInserisci la tipologia di volante: "); scanf("%s",temp); (macchina+i)->opt.volante = temp; free(temp); } } //Funzione che stampa a video i dati della struttura void stampadati(arg *macchina, int nmacchine){ int i=0; printf("\n\nCONFIGURAZIONI DISPONIBILI:"); for(i=0;i<nmacchine;i++){ printf("\n\nGiulietta %d", i+1); printf("\nInterni: %s", (macchina+i)->interni); printf("\nEsterni: %s", (macchina+i)->esterni); printf("\nCerchi: %s", (macchina+i)->cerchi); printf("\nOPTIONALS"); printf("\nInterni: %s", (macchina+i)->opt.sedili); printf("\nInterni: %s", (macchina+i)->opt.volante); } }
Grazie per la pazienza se siete arrivati fino a qui...
'; } } //Funzione per memorizzare i dati nella struttura void inseriscidati(arg *macchina, int nmacchine){ int i=0; char *temp; for(i=0;i<nmacchine;i++){ printf("\nMacchina %d:", i+1); temp = (char *) malloc(sizeof(char)); printf("\nInserisci il tipo di interno: "); scanf("%s",temp); (macchina+i)->interni = temp; printf("\n%s", (macchina+i)->interni); printf("\nInserisci il colore degli esterni: "); scanf("%s",temp); (macchina+i)->esterni = temp; printf("\nInserisci il tipo di cherchi: "); scanf("%s",temp); (macchina+i)->cerchi = temp; printf("\nOPTIONALS:"); printf("\nInserisci il colore dei sedili: "); scanf("%s",temp); (macchina+i)->opt.sedili = temp; printf("\nInserisci la tipologia di volante: "); scanf("%s",temp); (macchina+i)->opt.volante = temp; free(temp); } } //Funzione che stampa a video i dati della struttura void stampadati(arg *macchina, int nmacchine){ int i=0; printf("\n\nCONFIGURAZIONI DISPONIBILI:"); for(i=0;i<nmacchine;i++){ printf("\n\nGiulietta %d", i+1); printf("\nInterni: %s", (macchina+i)->interni); printf("\nEsterni: %s", (macchina+i)->esterni); printf("\nCerchi: %s", (macchina+i)->cerchi); printf("\nOPTIONALS"); printf("\nInterni: %s", (macchina+i)->opt.sedili); printf("\nInterni: %s", (macchina+i)->opt.volante); } }
Grazie per la pazienza se siete arrivati fino a qui...
aaa