Xhack
Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.
Xhack

Un forum dedicato all'hacking
 
IndiceIndice  PortalePortale  CercaCerca  Ultime immaginiUltime immagini  RegistratiRegistrati  Accedi  

 

 [C]Inutility per la gestione file

Andare in basso 
2 partecipanti
AutoreMessaggio
LordHk
Moderatore
Moderatore
LordHk


Numero di messaggi : 140
Data d'iscrizione : 28.09.07

[C]Inutility per la gestione file Empty
MessaggioTitolo: [C]Inutility per la gestione file   [C]Inutility per la gestione file EmptyVen Ott 19, 2007 11:05 pm

Ma io qua non vi ho messo il mio passatempo prima di Ferragosto... XD
@Black: questo è il vecchio codice, quello senza variabili globali è nel mio mp3 rotto... Siccome sono pigro per rifare il lavoro, posto questo con quellepiccole mancanze...
Codice:
/*Programma per la gestione anagrafica su file.
  14/08/2007 Lord Hk (corretto da BlackLight)*/

#include <stdio.h>
#include <string.h>

#define DIM 31
#define MENU 0
#define INS 1
#define CAN 2
#define RIC 3
#define VIS 4
#define OUT 100

//Dati persona
struct per {
char cognome[DIM];
char nome[DIM];
char ind[DIM];
int  eta;
};

//Puntatore al file
FILE *fp;

//Variabile di appoggio per operazioni su file
struct per anag;

int menPer(void);
void insPer(void);
void ricPer(void);
void canPer(void);
long cerPer(char *, char *, int);
void eliPer(long pos);
void visPer(void);
void visAnagrafe(void);

//Menù e funzione scelta
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:
      ricPer();
      scelta = MENU;
      break;}
}
}

//Menù
int menPer(void)
{
int scelta;
char invio;
int vero = 1;

while(vero){
  printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
  printf("\t\t\t GESTIONE CONTATTI");
  printf("\n\n\n\t\t\t 1. Immissione Persona");
  printf("\n\n\t\t\t 2. Cancellazione Persona");
  printf("\n\n\t\t\t 3. Ricerca Persona");
  printf("\n\n\t\t\t 4. Visualizza elenco");
  printf("\n\n\t\t\t 0. Chiudi");
  printf("\n\n\n\t\t\t\t Scegliere una opzione: ");
  scanf("%d", &scelta);
  getchar();
  printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
  switch(scelta) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
      return(scelta);
    default:
      break;
  }
}
return(0);
}

//Inserimento persona in anag.dat
void insPer(void)
{
char invio;
fp = fopen("anag.dat", "a+");

printf("\n\t\tINSERIMENTO PERSONA");
printf("\n\t\t---------------\n\n");
printf("\nCognome : ");

fgets(anag.cognome,sizeof(anag.cognome),stdin);
anag.cognome[strlen(anag.cognome)-1]=0;

printf("\nNome : ");
fgets(anag.nome,sizeof(anag.nome),stdin);
anag.nome[strlen(anag.nome)-1]=0;

printf("\nEmail : ");
fgets(anag.ind,sizeof(anag.ind),stdin);
anag.ind[strlen(anag.ind)-1]=0;

printf("\nEta' : ");
scanf("%d", &anag.eta),
scanf("%c", &invio);

fwrite(&anag, sizeof(struct per), 1, fp);
fclose(fp);
}

//Cancella persona dall'anagrafe
void canPer(void)
{
char pausa;
char cognome[DIM], nome[DIM];
int eta;
long pos;
printf("\n\t\tCANCELLA PERSONA");
printf("\n\t\t------\n\n");

printf("\nCognome : ");
getchar();
fgets(cognome,sizeof(cognome),stdin);
cognome[strlen(cognome-1)]=0;

printf("\nNome : ");
fgets(nome,sizeof(nome),stdin);
nome[strlen(nome)-1]=0;

printf("\Eta' : ");
scanf("%d", &eta);
scanf("%c", &pausa);
//Chiama ricerca persona
pos = cerPer(cognome, nome, eta);
if(pos == -1) {
  printf("\nPersona non presente");
  scanf("%c", &pausa);
  return;
}
//Chiama visulizza persona
visPer();
printf("\nConfermi cancellazione ? (S/N) ");
scanf("5c", &pausa);
if(pausa=='S' || pausa=='s') {
  eliPer(pos);
  return;
}
}
//Elimina persona
void eliPer(long pos)
{
strcpy(anag.cognome, "");
strcpy(anag.nome, "");
strcpy(anag.ind, "");
anag.eta = 0;
fp = fopen("anag.dat", "r+");
fseek(fp,pos,0);
fwrite(&anag, sizeof(struct per), 1, fp);
fclose(fp);
}

//Ricerca persona
void ricPer(void)
{
char pausa;
char cognome[DIM], nome[DIM];
int eta;
long pos;
//Inserimento dati persona da ricercare
printf("\n\t\tRICERCA PERSONA");
printf("\n\t\t------\n\n");

printf("\nCognome : ");
fgets(cognome,sizeof(cognome),stdin);
cognome[strlen(cognome)-1]=0;

printf("\nNome : ");
fgets(nome,sizeof(nome),stdin);
nome[strlen(nome)-1]=0;

printf("\nEta' : ");
scanf("%d", &eta);
scanf("%c", &pausa);
//Chiama la funzione di scansione sequenziale
pos = cerPer(cognome, nome, eta);
if(pos == -1) {
  printf("\nPersona non presente");
  scanf("%c", &pausa);
  return;
}
visPer();
scanf("%c", &pausa);
}

//Scansione sequenziale di anag.dat
long cerPer(char *cg, char *nm, int et)
{
int n;
long pos = 0L;

fp = fopen("anag.dat", "r");

for(;;) {
  n = fread(&anag, sizeof(struct per), 1, fp);
  if(n==0) {
    fclose(fp);
    pos = -1;
    return (pos);
  }
  else
    if(strcmp(cg, anag.cognome) == 0)
      if(strcmp(nm, anag.nome) == 0)
        if(et == anag.eta) {
      pos = ftell(fp);
      fclose(fp);
            return(pos-sizeof(struct per));
      }
  }
}

//Visualizza persona
void visPer(void)
{
printf("\n\n--------------------\n");
printf("\n\t\tCognome : %s", anag.cognome);
printf("\n\t\tNome : %s", anag.nome);
printf("\n\t\tEmail : %s", anag.ind);
printf("\n\t\tEta' : %d", anag.eta);
printf("\n\n--------------------\n");
}

//Visualizza anagrafe completa
void visAnagrafe(void)
{
int n; char pausa;
fp = fopen("anag.dat", "r");
do {
  n = fread(&anag, sizeof(struct per), 1, fp);
  if(n==0) fclose(fp);
  else {
    visPer();
    scanf("%c", &pausa);
  }
}
while(n!=0);
}
Torna in alto Andare in basso
BlackLight
Moderatore
Moderatore
BlackLight


Numero di messaggi : 277
Età : 37
Data d'iscrizione : 22.08.07

[C]Inutility per la gestione file Empty
MessaggioTitolo: Re: [C]Inutility per la gestione file   [C]Inutility per la gestione file EmptySab Ott 20, 2007 12:25 am

Si si...me lo ricordo Very Happy
Torna in alto Andare in basso
http://blacklight.gotdns.org
 
[C]Inutility per la gestione file
Torna in alto 
Pagina 1 di 1
 Argomenti simili
-
» file editor
» [c]file editor
» Inviare file con autoit da un computer all'altro?

Permessi in questa sezione del forum:Non puoi rispondere agli argomenti in questo forum.
Xhack :: Programmazione :: C/C++-
Vai verso: