Ciao raga vorrei capire cosa sbaglio ma soprattutto perchč mi da un errore del genere:
In function `elemento* leggiDaFile(elemento*)':|
`substring' was not declared in this scope|
||=== Build finished: 1 errors, 0 warnings ===|
cosa significa???
qualcuno di voi sa correggerlo nell'implementazione???...GRAZIE e CIAO!!!
// Inclusione delle librerie
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Creo la struttura per contenere il database
typedef struct
{
char cognome[50];
char matricola[5];
char voto[3];
} t_database;
// Creo la struttura per creare la lista
struct elemento
{
t_database inf;
struct elemento *pun;
};
// Prototipi delle funzioni
void visualizzaContatto(struct elemento* p);
struct elemento *leggiDaFile(struct elemento *p);
void salvaSuFile(struct elemento *p);
// Funzione principale - MAIN
int main()
{
// dichiaro la variabile scelta e la lista vuota
int scelta;
struct elemento *lista = NULL;
// Visualizzo i contatti presenti
visualizzaContatto(lista);
// Leggo i contatti da File
lista = leggiDaFile(lista);
// Salvo i contatti su File
salvaSuFile(lista);
return 0;
}
/* Visualizza i contatti presenti */
void visualizzaContatto(struct elemento* p)
{ // visualizzaContatto() - OPEN
if (p == NULL)
{ // IF - OPEN
/* Se non ci sono contatti lo stampo a video */
printf ("\nNessun contatto presente\n");
}
else
{ // ELSE
/* Stampo il primo contatto presente */
printf (" COGNOME:\n%s\n", p->inf.cognome);
printf (" MATRICOLA:\n%s\n", p->inf.matricola);
printf (" VOTO:\n%s\n", p->inf.voto);
}// IF - CLOSE
while (p != NULL)
{ // WHILE - OPEN
/* Stampo gli altri contatti */
printf (" COGNOME:\n%s\n", p->inf.cognome);
printf (" MATRICOLA:\n%s\n", p->inf.matricola);
printf (" VOTO:\n%s\n", p->inf.voto);
// Leggo l'elemento successivo
p = p->pun;
}// WHILE - CLOSE
} // visualizzaContatto() - CLOSE
/* Leggo i contatti dal file database.txt */
struct elemento *leggiDaFile(struct elemento *p)
{ // leggiDaFile - OPEN
// Dichiaro le variabili
t_database daInserire;
t_database vuoto; // elemento vuoto
struct elemento *punt = p;
char linea[500]; // stringa per l'acquisizione
int index=0; // inizializza l'indice
// Apre il file
FILE *file_database = fopen("database.txt","rt");
// Salvo la lista di contatti
while(fgets(linea, 500, file_database) != NULL)
{ // WHILE - OPEN
index = strcspn(linea, ",");
strncpy(daInserire.cognome, linea, index);
substring(daInserire.cognome, daInserire.cognome, 0, index-1);
substring(linea, linea, index+1, strlen(linea));
index = strcspn(linea, ",");
strncpy(daInserire.matricola, linea, index);
substring(daInserire.matricola, daInserire.matricola, 0, index-1);
substring(linea, linea, index+1, strlen(linea));
index = strcspn(linea, ",");
strncpy(daInserire.voto, linea, index);
substring(daInserire.voto, daInserire.voto, 0, index-1);
substring(linea, linea, index+1, strlen(linea));
// Aggiunge l'elemento alla lista
p = punt;
punt = (struct elemento *)malloc(sizeof(struct elemento));
punt->inf = daInserire;
punt->pun = p;
// azzera il valore di daInserire
daInserire = vuoto;
} // WHILE - CLOSE
// Chiude il file
fflush(file_database);
fclose(file_database);
// Esce dalla funzione e restituisce la lista
return(punt);
}// leggiDaFile - CLOSE
/* Salvo i contatti inseriti in un file di nome database_ordinato.txt */
void salvaSuFile(struct elemento *p)
{ // salvaSuFile() - OPEN
// Apre il file
FILE *file_database_ordinato = fopen("database_ordinato.txt","w");
// Salvo la lista di contatti
while (p != NULL)
{ // WHILE - OPEN
// Scrive sul file
fprintf(file_database_ordinato, "%s,%s,%s\n", p->inf.cognome, p->inf.matricola, p->inf.voto);
// legge l'emento successivo
p = p->pun;
} // WHILE - CLOSE
// Chiude il file
fflush(file_database_ordinato);
fclose(file_database_ordinato);
// Esce dalla funzione
}// salvaSuFile() - CLOSE
Ultima modifica effettuata da giocala88 il 25/04/2008 alle 16:38 |