Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - fopen  aiuto! :)
Forum - C/C++ - fopen aiuto! :)

Avatar
feddur (Normal User)
Pro


Messaggi: 200
Iscritto: 06/03/2008

Segnala al moderatore
Postato alle 2:28
Venerdì, 29/05/2009
Salve, ho cominciato questo programma:
Codice sorgente - presumibilmente C++

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. int ok;
  5. struct paziente
  6.    { char nome[20];
  7.      char cognome[20];
  8.      int numero;
  9.    };
  10.  
  11. main()
  12.   { struct paziente dati;    
  13.   printf("*** Iserire dati paziente ***\n\n");  
  14.  
  15.   printf("Cognome: ");
  16.   scanf("%s",dati.cognome);
  17.    
  18.   printf("Nome:\t ");
  19.   scanf("%s",dati.nome);
  20.    
  21.   printf("Numero:\t ");
  22.   scanf("%d",&dati.numero);
  23.  
  24.   printf("\nPremi 1 per confermare i dati, 0 per annullare:\n");
  25.   scanf("%d",&ok);
  26.       if (ok == 1)
  27.       {      
  28.      
  29.         FILE *fp;
  30.         fp = fopen (dati.cognome , "w+");
  31.         fprintf(fp, "Cognome: %s\n", dati.cognome);
  32.         fprintf(fp, "Nome\t:%s\n", dati.nome);  
  33.         fprintf(fp, "Numero\t%d\n", dati.numero);
  34.        
  35.       printf("Paziente inserito nel database\n");
  36.      
  37.       }
  38.       else
  39.       {
  40.       printf("Annullato\n");
  41.       }
  42.  
  43.   system("PAUSE");
  44.   return 0;
  45.  
  46.   }



vorrei che quando salva il file, venga salvato in un cartella con il nome del cognome e nome del paziente, in modo da avere una cartella per ogni singolo paziente.
Come posso fare?
Grazie.

PM Quote
Avatar
gio97 (Ex-Member)
Guru


Messaggi: 715
Iscritto: 25/04/2009

Segnala al moderatore
Postato alle 7:07
Venerdì, 29/05/2009
potresti creare con il comando system la cartella e poi con lo stesso comando entrarci.
ma a cosa ti serve avere i pazienti suddivisi? in fondo in ogni cartella c'è dentro un file: il numero degli oggetti che vedi è lo stesso.

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 9:06
Venerdì, 29/05/2009
devi usare l'api CreateDirectory, cerca su msdn il suo manuale

in breve dovrebbe essere:

CreateDirectory(nome, security_attributes) ma il secondo parametro può anche essere NULL e la dir creata prende gli attributi di sicurezza di default

PM Quote
Avatar
feddur (Normal User)
Pro


Messaggi: 200
Iscritto: 06/03/2008

Segnala al moderatore
Postato alle 11:26
Venerdì, 29/05/2009
Mi serve perchè per ogni paziente poi dovrei mettere altri file (il programma ancora non è finito).

Ho cercato CreateDirectory(nome, security_attributes) ma non riusco a farlo funzionare.. o meglio: non riesco a dichiare le api.

Codice sorgente - presumibilmente C++

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. int ok;
  5. struct paziente
  6.    { char nome[20];
  7.      char cognome[20];
  8.      int numero;
  9.    };
  10.  
  11. main()
  12.   { struct paziente dati;    
  13.   printf("*** Iserire dati paziente ***\n\n");  
  14.  
  15.   printf("Cognome: ");
  16.   scanf("%s",dati.cognome);
  17.    
  18.   printf("Nome:\t ");
  19.   scanf("%s",dati.nome);
  20.    
  21.   printf("Numero:\t ");
  22.   scanf("%d",&dati.numero);
  23.  
  24.   printf("\nPremi 1 per confermare i dati, 0 per annullare:\n");
  25.   scanf("%d",&ok);
  26.       if (ok == 1)
  27.       {      
  28.      
  29.         FILE *fp;
  30.         CreateDirectory(dati.cognome, NULL);
  31.         fp = fopen (dati.cognome , "w+");
  32.         fprintf(fp, "Cognome: %s\n", dati.cognome);
  33.         fprintf(fp, "Nome\t:%s\n", dati.nome);  
  34.         fprintf(fp, "Numero\t%d\n", dati.numero);
  35.        
  36.       printf("Paziente inserito nel database\n");
  37.      
  38.       }
  39.       else
  40.       {
  41.       printf("Annullato\n");
  42.       }
  43.  
  44.   system("PAUSE");
  45.   return 0;
  46.  
  47.   }


PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 11:55
Venerdì, 29/05/2009
aggiungi in alto
Codice sorgente - presumibilmente Plain Text

  1. #include<windows.h>


PM Quote
Avatar
feddur (Normal User)
Pro


Messaggi: 200
Iscritto: 06/03/2008

Segnala al moderatore
Postato alle 12:10
Venerdì, 29/05/2009
Grazie :)
un'altra domanda.. come faccio poi a metterci il file dentro?

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 14:37
Venerdì, 29/05/2009
scusa, crea il file direttamente nella cartella che hai creato
se per qualsiasi ragione non puoi farlo allora usa la CopyFile(vedi msdn)

PM Quote