- Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLN 80
#define MAXCN 32
#define MAXNM 20
const char name[]="mydatabase.dat";
typedef struct agenda
{
char nome[MAXNM];
char cognome[MAXCN];
char indirizzo[MAXLN];
int num;
char nota[MAXLN];
struct agenda *next;
}agenda;
typedef agenda * agendaPtr;
agendaPtr push(agendaPtr head, agenda val);
agendaPtr pop(agendaPtr head);
int main()
{
agendaPtr tmp;
agendaPtr head=NULL;
agenda val;
FILE *fp;
int c=0;
char t_cogn[MAXCN], t_nom[MAXNM];
printf("************************\n");
printf("*********AGENDA*********\n");
printf("************************\n");
printf("***(c) Savino Liguori***\n");
//printf("************************");
if((fp=fopen(name,"r+w"))==NULL)
{
fprintf(stderr,"Errore apertura database");
return EXIT_FAILURE;
}
while(c<5)
{
printf("************************\n");
printf("1:Leggi Lista Contatti\n");
printf("2:Aggiungi Contatto\n");
printf("3:Rimuovi Contatto\n");
printf("4:Cerca Contatto\n");
printf("0:Esci Dal Programma\n");
scanf("%d", &c);
if(c==0)
{
printf("Grazie per aver usato AGENDA");
return EXIT_SUCCESS;
}
else if(c==1)
{
while(!feof)
{
fscanf(fp, "%s %s %s %d %s", val.nome, val.cognome, val.indirizzo, &val.num, val.nota);
printf("%s %s", val.nome, val.cognome);
}
rewind(fp);
}
else if(c==2)
{
printf("(Inserire _ al posto dello spazio:\n)");
printf("Nome:\n");
scanf("%s", val.nome);
printf("Cognome:\n");
scanf("%s", val.cognome);
printf("Indirizzo:\n");
scanf("%s", val.indirizzo);
printf("Numero di telefono:\n");
scanf("%d", &val.num);
printf("Note:\n");
scanf("%s", val.nota);
head=push(head, val);
rewind(fp);
}
else if(c==3)
{
printf("(Inserire _ al posto dello spazio:\n)");
printf("Cognome:\n");
scanf("%s", t_cogn);
printf("Nome:\n");
scanf("%s", t_nom);
while(!feof && ((strcmp(t_cogn, val.cognome)==0) && (strcmp(t_nom, val.nome)==0)))
fscanf(fp, "%s %s %s %d %s", val.nome, val.cognome, val.indirizzo, &val.num, val.nota);
head=pop(head);
rewind(fp);
}
else if(c==4)
{
printf("(Inserire _ al posto dello spazio:\n)");
printf("Cognome:\n");
scanf("%s", t_cogn);
while(!feof && (strcmp(t_cogn, val.cognome)==0))
fscanf(fp, "%s %s %s %d %s", val.nome, val.cognome, val.indirizzo, &val.num, val.nota);
printf("%s %s %s %d %s", val.nome, val.cognome, val.indirizzo, val.num, val.nota);
rewind(fp);
}
}
if (c>4)
printf("Parametro non valido");
return EXIT_SUCCESS;
}
agendaPtr push(agendaPtr head, agenda val)
{
agendaPtr tmp;
tmp=(agendaPtr)malloc(sizeof(agenda));
if(tmp==NULL)
{
printf("Allocazione fallita!");
exit (1);
}
tmp->nome=val.nome;
tmp->cognome=val.cognome;
tmp->indirizzo=val.indirizzo;
tmp->num=val.num;
tmp->nota=val.nota;
tmp->next=head;
head=tmp;
return head;
}
agendaPtr pop(agendaPtr head)
{
agendaPtr tmp;
tmp->next=head;
head=NULL;
return head;
}
compilando mi da un errore nella push...
- Codice: Seleziona tutto
Agenda.c:124: error: incompatible types in assignment
Agenda.c:125: error: incompatible types in assignment
Agenda.c:126: error: incompatible types in assignment
Agenda.c:128: error: incompatible types in assignment




