Ragazzi non capisco perchè ma facendo la programmazione modulare non mi riconosce nel file utenti.c la struttura che ho creato, sapreste dirmi se ho sbagliato in qualcosa? il codice è il seguente:
MAIN.C
#define BUFFER_SIZE 1024
//Librerie generali
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <ctype.h>
#include <windows.h>
#include "utenti.h"
#include "util.h"
int main(){
titolo();
int scelta;
utente *testa_Utente = NULL;
//Lettura utenti dal file
FILE *fpU;
fpU = fopen("utenti.csv", "r");
testa_Utente = lettura_Utenti(fpU);
do {
printf("\t \t \t 1. Login \n \n");
printf("\t \t \t 2. Registrazione \n \n");
printf("\t \t \t 3. Esci \n \n");
printf("\t \t \t \t Scelta : ");
scanf("%d", scelta);
//Ripulisco la schermata
clear_Console();
titolo();
switch (scelta) {
/* REGISTRAZIONE Utente */
case 2:
printf("Benvenuto! \n Crea il tuo account \n");
registrazione_utente(testa_Utente);
clear_Console();
titolo();
break;
default:
clear_Console();
titolo();
break;
}
printf("-----------------------------\n");
} while (scelta != 0);
printf("\n");
return 0;
system("PAUSE");
return 0;
}
UTENTI.H
/* utenti.h */
#include "utenti.c"
//Definizione struct UTENTE
typedef struct utente utente;
extern void registrazione_utente (utente *testa);
extern int lettura_UltimoID(utente *testa_utente);
extern Utente *lettura_Utenti(FILE *fp);
UTENTI.C
/* utenti.c */
#define Char_size 20
struct utente {
int id;
char nome[Char_size];
char cognome[Char_size];
char nick[Char_size];
char password[Char_size];
int permessi; // livello 1 = utente normale; livello 2 = admin (ha accesso a tutto);
struct utente *next_Utente; //puntatore al prossimo nodo
};
/*
* Funzione: registrazione_utente
* ----------------------------
* Permette la registrazione di un nuovo utente, con salvatggio dei dati sul file "utenti.csv" nella struct utente
*
* @param testa : puntatore all'inizio lista utenti, una lista contenente tutte gli utenti caricati dal file "utenti.csv"
*/
[color=#804080][color=#FF0000]void registrazione_utente (utente *testa) {[/color][/color]
// Puntatori a variabili tipo utente : Salvataggio in TESTA alla lista
utente *nuovo_Nodo = NULL;
utente *temp;
utente *curr, *prec;
prec = NULL;
curr = testa;
nuovo_Nodo = (utente *)malloc(sizeof(utente));
// ? ------------------------------------------
int ultimoID=0, i;
//flag test_Input = TRUE : errore inserimento
bool test_Input = false;
bool continua_Inserimento = true;
//flag per controllare univocità del campo nickname
bool flag = false;
// Apertura File con lista utenti
FILE *fp;
fp = fopen("utenti.csv", "a+");
/* Inserimento NOME */
do {
test_Input = false;
printf("\t \t \t Nome: ");
fgets(nuovo_Nodo -> nome, Char_size, stdin);
// Prima lettera in MAIUSCOLO e ultimo carattere è 0
nuovo_Nodo->nome[strlen(nuovo_Nodo -> nome) - 1] = 0;
nuovo_Nodo->nome[0] = toupper(nuovo_Nodo -> nome[0]);
// Campo Nome non compilato
if (strlen(nuovo_Nodo -> nome) == 0) {
continua_Inserimento = false;
clear_Console();
titolo();
break;
}
if (test_Input == true) {
clear_Console();
titolo();
puts("\t \t \t ----------");
printf("\t \t \t Attenzione!");
puts("\t \t \t \n Nome non valido.");
puts("\t \t \t -----------------------------");
}
} while (test_Input == true); // WHILE cicla per vero
/* Inserimento COGNOME */
if (continua_Inserimento == true) {
clear_Console();
titolo();
do {
test_Input = false;
printf("\t \t \t Cognome: ");
fgets(nuovo_Nodo -> cognome, Char_size, stdin);
// Prima lettera in MAIUSCOLO e ultimo carattere è 0
nuovo_Nodo -> cognome[strlen(nuovo_Nodo -> cognome) - 1] = 0;
nuovo_Nodo -> cognome[0] = toupper(nuovo_Nodo -> cognome[0]);
// Campo Cognome non compilato
if (strlen(nuovo_Nodo -> cognome) == 0) {
continua_Inserimento = false;
clear_Console();
titolo();
break;
}
fclose(fp);
//Inserimento in TESTA
nuovo_Nodo -> next_Utente = testa;
testa = nuovo_Nodo;
clear_Console();
titolo();
printf("\t \t \t Registrazione avvenuta con successo.\n");
printf("\t \t \t Benvenuto/a %s. \n", nuovo_Nodo -> nome);
pausa();
}
}
Ho cercato di ridurre il codice. L'errore sorge sulla stringa in rosso ed è il seguente:
- [Error] unknown type name 'utente'