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
  
charpulisci "cls";
#elif SISTEMA==1
  
charpulisci "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()*/
    
DIRtrova_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 (nomeq);
    
int n=0;
    while(
n!=3) {
    
system(pulisci);
    
printf("Digita 1 per vedere; 2 per modificare; 3 per uscire: ");
    
scanf("%d", &n);
    if(
n==1ad_p(nomeq);
    else if(
n==2vd_p(nomeq);
    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((
fopen("inf.bft""a"))== NULL) {
           if((
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(&dsizeof(struct pg), 1f);
     
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((
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(&asizeof(struct pg), 1f);
     while(!
feof(f)) {
     
printf("%s "a.nome);
          
printf("%s\n"a.cog);
                               
fread(&asizeof(struct pg), 1f);
                }
                
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?