Ciao, devo creare un array di strutture e implementare due funzioni con prototipo: void fill_student(int student_at_index) e void print_student(int student_at_index).
Esercizio.c
codice:
#include <stdio.h>
#include <stdlib.h>
#include "Studente.h"
#define NUMELEMENTS 15
void fill_student(int);
void print_student(int);
struct studente studenti[NUMELEMENTS];
int main(void) {
fill_student(0);
print_student(0);
printf("\n");
system("pause");
return 0;
}
void fill_student(int student_at_index) {
studenti[student_at_index].nome = "Tizio";
studenti[student_at_index].cognome = "Caio";
studenti[student_at_index].matricola = student_at_index;
studenti[student_at_index].laurea = "triennale";
studenti[student_at_index].indirizzo.via = "Roma";
studenti[student_at_index].indirizzo.numero = 20;
studenti[student_at_index].indirizzo.cap = 20215;
studenti[student_at_index].indirizzo.citta = "Milano";
}
void print_student(int student_at_index) {
printf("Nome: %s\nCognome: %s\nMatricola: %d\nLaurea: %s\nVia: %s\nNumero: %d\nCap: %d\nCitta: %s\n",
studenti[student_at_index].nome, studenti[student_at_index].cognome, studenti[student_at_index].matricola,
studenti[student_at_index].laurea,
studenti[student_at_index].indirizzo.via, studenti[student_at_index].indirizzo.numero,
studenti[student_at_index].indirizzo.cap, studenti[student_at_index].indirizzo.citta);
}
Studente.h
codice:
#include <stdio.h>
#include "Indirizzo.h"
struct studente {
char *nome;
char *cognome;
int matricola;
char *laurea;
struct indirizzo indirizzo;
} studente;
Indirizzo.h
codice:
#include <stdio.h>
struct indirizzo {
char *via;
int numero;
int cap;
char *citta;
} indirizzo;
Quello che ho postato sopra funziona però vorrei prendere i dati dalla tastiera.
codice:
void fill_student(int student_at_index) {
char tmp;
printf("Inserisci studente\n");
printf("Nome? ");
scanf("%s", &tmp);
strcpy(studenti[student_at_index].nome, tmp);
studenti[student_at_index].cognome = "Caio";
studenti[student_at_index].matricola = student_at_index;
studenti[student_at_index].laurea = "triennale";
studenti[student_at_index].indirizzo.via = "Roma";
studenti[student_at_index].indirizzo.numero = 20;
studenti[student_at_index].indirizzo.cap = 20215;
studenti[student_at_index].indirizzo.citta = "Milano";
}
Con gli interi funziona ma con le stringhe mi hanno detto di usare la funzione strcpy che prende come input due puntatori. Ora che scrivo mi sono reso conto che non ho incluso la libreria string.h ma non cambia niente.