PDA

View Full Version : datemi una mano....


R1((ky
12-04-2002, 16:59
Devo fare un progetto in C riguardo la gestione di una rubrica di indirizzi e numeri di telefono....

ho definito un menu utente così composto:


printf("Rubrica Indirizzi\n\nAutore: Riccardo Seravalle\n\n");
printf("1 - Inserisci persona all'elenco\n");
printf("2 - Ricerca dati di una persona tramite nome e cognome\n");
printf("3 - Rimuovi persona tramite codice\n");
printf("4 - Modifica dati tramite codice e indirizzo\n");
printf("5 - Stampa tutte le persone tramite codice e indirizzo\n");
printf("6 - Inserisci nuovo numero di telefono\n");
printf("7 - Ricerca numero tramite nome e cognome\n");
printf("8 - Cancella numero tramite codice\n");
printf("9 - Modifica numero tramite codice\n");
printf("10 - Stampa tutte le persone con i loro numeri di telefono\n");
printf("\nSeleziona: ");


e un costrutto switch fatto così:

switch (Risposta)

{

case '1': Inserisci();
break;
case '2': Ricerca();
break;
case '3': Rimuovi();
break;
case '4': Modificadati();
break;
case '5': Stampacodice();
break;
case '6': Nuovonumero()
break;
case '7': Ricercanumero();
break;
case '8': Cancellanumero();
break;
case '9': Modificanumero();
break;
case '10': Stampanumeri();
break;




ora che m trovo a fare le varie funzioni, esempo la numero 1, che è così composta:


{

printf("_______________________________________________________________________________\n\n");
printf("Inserire nome, cognome, indirizzo della persona, \n\ne assegnarne un codice nel formato <nome> <cognome> <indirizzo> <numero codice>\n\n");
printf("\nPremere CTRL+Z seguito da INVIO per terminare l'immissione dei dati\n");
printf("_______________________________________________________________________________\n\n\n");
{FILE *fpentrata=fopen("persone.dat", "a");
{
int c;while ((c=getchar())!=EOF) fputc(c, fpentrata);

}
}

}


il debugger in fase di compilazione mi dice:

undefined reference to _Inserisci



dove è l'errore? cosa devo fare? non sono tanto ferrato in materia....

MickMacello
12-04-2002, 22:43
la butto lì: hai definito i prototipi delle funzioni in testa al programma (prima del main) ?

R1((ky
12-04-2002, 22:45
void Inserisci(void);
void Ricerca(void);
void Rimuovi(void);
void Modificadati(void);
void Stampacodice(void);
void Nuovonumero(void);
void Ricercanumero(void);
void Cancellanumero(void);
void Modificanumero(void);
void Stampanumeri(void);

MickMacello
13-04-2002, 00:17
senti, fai prima ad allegare tutto il sorgente... leggerlo a spizzichi e bocconi aiuta poco.

R1((ky
13-04-2002, 00:25
eccolo

R1((ky
13-04-2002, 00:25
bisogna salvarlo in locale sennò non si capisce niente...

cionci
13-04-2002, 16:40
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>



typedef struct
{
char nome_cognome[52];
char indirizzo[101];
int codice_persona;
}persone;

typedef struct
{
int codice_persona_telefono;
char numero_telefono[21];
char commento[51];
}num_telefono;


/*prototipi*/


void Inserisci(void);
void Ricerca(void);
void Rimuovi(void);
void Modificadati(void);
void Stampacodice(void);
void Nuovonumero(void);
void Ricercanumero(void);
void Cancellanumero(void);
void Modificanumero(void);
void Stampanumeri(void);



main()
{


int Risposta;

switch (Risposta)

{

case '1': Inserisci();
break;
case '2': Ricerca();
break;
case '3': Rimuovi();
break;
case '4': Modificadati();
break;
case '5': Stampacodice();
break;
case '6': Nuovonumero(); //<-- mancava un ; mi sembra qui
break;
case '7': Ricercanumero();
break;
case '8': Cancellanumero();
break;
case '9': Modificanumero();
break;
case '10': Stampanumeri();
break;



}


} //<--mancava questa grafa (l'avevi messo in fondo al file)




void Inserisci() // <-- qui non ci voleva il ;

{
printf("_______________________________________________________________________________\n\n");
printf("Inserire nome, cognome, indirizzo della persona, \n\ne assegnarne un codice nel formato <nome> <cognome> <indirizzo> <numero codice>\n\n");
printf("\nPremere CTRL+Z seguito da INVIO per terminare l'immisione dei dati\n");
printf("_______________________________________________________________________________\n\n\n");
{FILE *fpentrata=fopen("persone.txt", "a");
{
int c;while ((c=getchar())!=EOF) fputc(c, fpentrata);

}
}

}


Ciao ;)

MickMacello
13-04-2002, 16:42
quando definisci la funzione devi usare esattamente lo stesso prototipo altrimenti qualche compilatore s' incazza. Inoltre quando la definisci non devi mettere il ; prima delle graffe !


void Inserisci(void)
{...}

MickMacello
13-04-2002, 16:42
ecco cionci mi ha anticipato

R1((ky
13-04-2002, 17:07
grazie a tutti...magari facendo copia-incolla tra un sorgente e l'altro (ne faccio uno per ogni funzione) ho scazzato la graffa....


;)