Quello che sto facendo è un programma che all'inizio deve creare una cartella con un certo nome (deciso dall'utente) e subito dopo crea all'interno alcuni file. Il problema però è uno: riesco a creare la cartella ed il file ma non riesco a leggere il file. Metto qui il codice:
Codice PHP:
#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);
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: ");
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"};
strcat(p,dat);
if((f = fopen("inf.bft", "a"))== NULL) {
if((f = fopen("inf.bft", "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"};
strcat(p,dat);
FILE *f;
struct pg a;
if((f = fopen("inf.bft", "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);
}
Ho provato, utilizzando lo stesso codice, a fare la stessa cosa salvando i file nella stessa cartella del programma (quindi senza creare una nuova cartella) e funziona alla grande il programma. Se metto la parte della cartella non funziona e non capisco il motivo. Qualcuno potrebbe aiutarmi?