|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Sep 2012
Messaggi: 1
|
Rubrica telefonica cn file
Salve volevo chiedervi come devo fare per inserire nel programma la funzione modifica contatto . Questo è quanto ho scritto fino ad ora .
#include<stdio.h> #include<string.h> #define MENU 0 #define DIM 100 #define INS 1 #define CAN 2 #define RIC 3 #define VIS 4 #define MOD 5 #define OUT 100 struct Per{ char nome [DIM]; char cognome [DIM]; int numero; }; FILE *fp; struct Per Rub; int menPer (void); void insPer(void); void ricPer(void); void canPer(void); void modPer(void); long cerPer(char *,char *); void eliPer(long pos); void cambPer(long pos); void visPer(void); void visRub(void); int main(){ int scelta =MENU; while (scelta!=OUT){ switch (scelta) { case MENU: scelta=menPer(); if (scelta==MENU) scelta = OUT; break; case INS: insPer(); scelta =MENU; break; case CAN: canPer(); scelta=MENU; break; case RIC: canPer(); scelta=MENU; break; case VIS: visPer(); scelta=MENU; break; case MOD: modPer(); scelta=MENU; break; }} int menPer(void){ int scelta ; char invio ; int vero=1; while (vero) { printf("RUBRICA TELEFONICA\n"); printf("1.Nuovo contatto\n"); printf("2.Cancella contatto\n"); printf("3.Cerca contatto\n"); printf("4.visualizza rubrica\n "); printf("5.Modifica contatto\n"); printf("0.Chiudi rubrica "); scanf("%d",&scelta); scanf("%c",&invio); switch (scelta) { case 0: case 1: case 2: case 3: case 4: case 5: return (scelta); default: break; } } return(0); } void insPer(void){ char invio; fp = fopen("Contatti.dat", "w+"); printf("Nome: \n"); gets(Rub.nome); printf("Cognome: \n"); gets(Rub.cognome); printf("Numero: \n"); scanf("%d",&Rub.numero); scanf("%c",&invio); fwrite(&Rub, sizeof(struct per), 1,fp); fclose(fp); } void canPer(void){ char pausa; char nome[DIM]; char cognome[DIM]; int numero; long pos; printf("Nome: \n"); gets(nome); printf("Cognome: \n"); gets(cognome); printf("Numero: \n"); scanf("%d",&numero); scanf("%c",&pausa); pos=cerPer(nome , cognome); if(pos==-1){ printf("Contatto nn in elecno\n"); scanf("%c",&pausa); return; } visPer(); printf("Cancellare contatto?...S/N"); scanf("%c",&pausa); if (pausa=='s'|| pausa=='S') { eliPer(pos); } } void eliPer(long pos){ strcmp(Rub.nome, ""); strcmp(Rub.cognome,""); Rub.numero=0; fp = fopen("Contatti.dat","r+"); fseek(fp,pos,0 ); fwrite(&Rub,sizeof(struct per ),1, fp); fclose(fp); } void ricPer(void){ char pausa; char nome [DIM]; char cognome[DIM]; long pos; printf("Nome: \n"); gets(nome); printf("Cognome: \n"); gets(cognome); scanf("%c",&pausa); pos=cerPer(nome, cognome); if(pos==-1){ printf("Contatto nn presente"); scanf("%c",&pausa); return; } visPer(); scanf("%c",&pausa); } long cerPer(char *nm,char *cg){ int n; long pos= 0L; fp = fopen("Contatti.dat", "r"); for(; n = fread(&Rub, sizeof(struct per), 1, fp); if(n==0){ fclose(fp); pos=-1; return(pos); } else if(strcmp(nm,Rub.nome)==0) if(strcmp(cg,Rub.cognome)){ pos=ftell(fp); fclose(fp); return(pos-sizeof(struct per)); } } } void visper (void){ printf("Nome: %s\n",Rub.nome); printf("Cognome: %s\n",Rub.cognome); printf("Numero :%d\n",Rub.numero); printf("\n\n\n\n\n\n\n\n"); } void visRub(void){ int n; char pausa; fp = fopen("Contatti.dat","r"); do{ n = fread(&Rub, sizeof(struct per), 1, fp); if(n==0){ fclose(fp); else visPer(); scanf("%c",&pausa); } } while (n!=0); } |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:42.



















