Non sono bravissimo con il linguaggio c ma posso aiutarti e voglio farlo
un errore hai inserito una funzione all'interno del main NON è POSSIBILE inseririre
funzioni all'interno di altre funzioni IN NESSUN LINGUAGGIO
la struct struttura è all'interno del main quindi è locale NON MODIFICABILE da altre
funzioni se non si passa per riferimento i puntatori
SOLUZIONI
scrivere la struct fuori dal main e renderla globale ("accessibile da tutte le funzioni")
o passare un puntatore alla funzione e modificarla
soluzione con struttura globale
codice:#include<stdio.h> #include<stdlib.h> #include<string.h> #define LUNGHEZZA 10 struct part { // SE DEVI ACCEDERE A STRUTTURA O USI PUNTATORI O è GLOBALE // FUORI DAL MAIN char Cognome[LUNGHEZZA+1], Nome[LUNGHEZZA+1]; }struttura; void inserisci (void);//MANCAVA IL PUNTO E VIRGOLA FINE ISTRUZIONE int main(void){ printf("Ciao\n"); int numero; printf("Ciao scrivi 1 se vuoi inserire nome e cognome"); scanf("%d", &numero); if (numero == 1) inserisci(); }// FINE MAIN void inserisci (void)// LA FUNZIONE ERA SCRITTA ALL'INTERNO DEL MAIN { int i; printf("nome?"); //for (i=0; i<LUNGHEZZA;i++) SOSTITUIAMOLO CON UN SCANF %S scanf("%s", struttura.Nome); fflush(stdin); // serve per pulire stdin printf("\n"); printf("Cognome?"); //for (i=0; i<LUNGHEZZA;i++) scanf("%s", struttura.Cognome); printf("\n"); } d
soluzione con puntatori
codice:#include<stdio.h> #include<stdlib.h> #include<string.h> #define LUNGHEZZA 10 typedef struct part { // creiamo un tipo struttura di nome s char Cognome[LUNGHEZZA+1], Nome[LUNGHEZZA+1]; }s; void inserisci (s*);//funzione che riceve un puntatore di tipo s int main(void){ s struttura; printf("Ciao\n"); int numero; printf("Ciao scrivi 1 se vuoi inserire nome e cognome"); scanf("%d", &numero); if (numero == 1) inserisci(&struttura);//invio il puntatore a struttura puts(struttura.Nome); puts(struttura.Cognome); getchar(); getchar(); }// FINE MAIN void inserisci (s* a) { int i; printf("nome?"); //for (i=0; i<LUNGHEZZA;i++) SOSTITUIAMOLO CON UN SCANF %S scanf("%s", a->Nome); fflush(stdin); // serve per pulire stdin printf("\n"); printf("Cognome?"); //for (i=0; i<LUNGHEZZA;i++) scanf("%s", a->Cognome); printf("\n"); }


Rispondi quotando