Ci sono molti errori alcuni solo di distrazione , non li ho corretti dopo ci pensi tu!
PROVALO piu o meno funziona
CONSIGLIO invece di fare giochini con l'evidenziatura del codice sta più attento
a codice che scrivi
codice:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
/* SISTEMA = 1 -> Sistema Linux;
SISTEMA = 0 -> Sistema Windows; */
#ifndef SISTEMA
#define SISTEMA 0
#endif
/* Scelgo la funzione di sistema per pulire lo schermo*/
#if SISTEMA==0
char* pulisci = "cls";
#elif SISTEMA==1
char* pulisci = "clear";
#endif
struct pg {
char nome[15];
char cog[15];
};
void ad_p (); /*funzione per aggiungere dettagli*/
void vd_p (); /*funzione per vedere la scheda*/
int main () {
int Error; /*contiene il return della mkdir()*/
DIR* trova_cartella; /*serve a verificare se esiste la cartella dove verranno salvati i file*/
char Vuoto[2];
printf("Digita il nome del pg (es: ezio, marco...): ");
char nome[15];
int q = 15;
scanf("%s", nome);
trova_cartella=opendir (nome);
if (trova_cartella==NULL)
{
printf ("\nNon è stata trovata la directory %s dove andranno salvati i file del programma.", nome);
printf ("\nVerrà creata la directory necessaria al programma. Premi Enter");
fgets (Vuoto,2,stdin); // ERRORE LA fgets NON VIENE LETTA
Error=mkdir (nome);
if (Error==-1)
{
printf ("\nErrore nella creazione della cartella.\n");
printf ("\nPremere il tasto 'Esc' per uscire dal programma.\n\n");
getch();
return;
}
printf ("\nLa directory %s è stata creata correttamente.\n\n", nome);
}
closedir (trova_cartella);
printf("Premi un tasto per continuare");
getch();
system(pulisci);
ad_p (nome, q);
int n=0;
while(n!=3) {
system(pulisci);
printf("Digita 1 per vedere; 2 per modificare; 3 per uscire: ");
// ERRORE IL NUMERO MENU NON CORRISPONDE ALLA FUNZIONE
scanf("%d", &n);
if(n==1) ad_p(nome, q);
else if(n==2) vd_p(nome, q);
else printf("Numero non corretto");
}
}
/********************+FUNZIONE PER CREARE I DATI *****************/
void ad_p(char p [], int q) {
FILE *f;
char *dat = {"\\inf.bft"}; // ERRORE SE DEVI AGGIUNGERE IL NOME FILE OCCORRE \\
char percorso[80]; // ERRORE SE MODIFICHI P LA MODIFICA PERMANE E SE
//MODIFICHI ANCORA NELLA FUNZIONE PER LEGGERE NON CORRISPONDE AL PATH
strcpy(percorso,p);
strcat(percorso,dat);
puts(percorso);
if((f = fopen(percorso, "a"))== NULL) {
if((f = fopen(p, "w"))== NULL) {
printf("Il file non può essere creato/aperto\n Premi un tasto per ritornare al menu");
getch();
return;
}
}
struct pg d;
printf("Digita il nome del pg: ");
scanf("%s", d.nome);
printf("Digita il cognome del pg: ");
scanf("%s", d.cog);
fwrite(&d, sizeof(struct pg), 1, f);
fclose(f);
}
/********************+FUNZIONE PER VEDERE I DATI *****************/
void vd_p(char p [], int q) {
char *dat = {"\\inf.bft"};
char percorso[80];//ERRORE se modifichi p con strcat la modifica permane
strcpy(percorso,p);
strcat(percorso,dat);
FILE *f;
struct pg a;
if((f = fopen(percorso, "r"))== NULL) {
printf("Il file non puo essere aperto\n Premi un tasto per ritornare al menu");
getch();
return;
}
rewind(f);
fread(&a, sizeof(struct pg), 1, f);
while(!feof(f)) {
printf("%s ", a.nome);
printf("%s\n", a.cog);
fread(&a, sizeof(struct pg), 1, f);
}
getch();
fclose(f);
}