PDA

View Full Version : salvare file in C


Re_Kotc
14-02-2007, 16:24
Salve a tutti..sono abbastanza nuovo nel mondo della programmazione e quindi se fosse possibile evitare insulti.. :D :D ..volevo sapere come si fa all'interno del sorgente di un programma in C a specificare dove salvare l'eventuale file,...lla creazione non è un problema ma i file che creo durante l'esecuzione del programma finiscono sempre nella directory del programma stesso...e se io li volessi sul desktop??..se qualcuno ha una risposta mi aiuterebbe molto..:-) grazie a tutti e ciao!

andbin
14-02-2007, 16:37
Salve a tutti..sono abbastanza nuovo nel mondo della programmazione e quindi se fosse possibile evitare insulti.. :D :DTranquillo .... qui nessuno insulta chi è all'inizio. ;)

..volevo sapere come si fa all'interno del sorgente di un programma in C a specificare dove salvare l'eventuale file,...lla creazione non è un problema ma i file che creo durante l'esecuzione del programma finiscono sempre nella directory del programma stesso...e se io li volessi sul desktop??Innanzitutto suppongo che tu usi la funzione fopen per aprire/creare i file. Ma indipendentemente dalla funzione usata, nulla ti vieta di specificare un path ben preciso:

f = fopen ("C:\\TEMP\\prova.txt", "w");

Se vuoi ottenere "programmaticamente" il percorso di certe cartelle specifiche di Windows (es. il desktop, la directory di Windows, ecc...), allora devi usare delle funzioni specifiche del sistema.

Re_Kotc
14-02-2007, 16:46
uhm..beh questa risposta mi è molto utile!..grazie..però..io come NOMEFILE ho messo una variabile che è un vettore di caratteri definito dall'utente..così poi il file ha il nome che sceglie chi esegue il programma..:D...(per non dire che per dargli l'estensione giusta concateno il nome dato dall'utente con la stringa ".txt" LOL :D ) ..quindi usando il tuo esempio potrei fare una cosa tipo:

f = fopen ("C:\\TEMP\\NOMEFILE", "w"); dove invece del nome predefinito c'è il nome scelto dall'utente?

andbin
14-02-2007, 16:53
f = fopen ("C:\\TEMP\\NOMEFILE", "w"); dove invece del nome predefinito c'è il nome scelto dall'utente?No, quella è una stringa costante ("letterale").

Se vuoi che sia l'utente a specificare il nome del file, puoi fare:
char nomefile[200];
FILE *f;

printf ("Dammi il nome del file: ");
scanf ("%s", nomefile);

f = fopen (nomefile, "w");

Re_Kotc
14-02-2007, 16:56
no ma appunto...forse sono io che non capisco...come faccio a usare entrambe queste caratteristiche? cioè a chiedere il nome all'utente e a mettere nel codice del programma una directory predefinita diversa da quella dove risiede il programma stesso?..è possibile? prometto che poi vado a fare pratica :)

andbin
14-02-2007, 17:05
no ma appunto...forse sono io che non capisco...come faccio a usare entrambe queste caratteristiche? cioè a chiedere il nome all'utente e a mettere nel codice del programma una directory predefinita diversa da quella dove risiede il programma stesso?..è possibile? prometto che poi vado a fare pratica :)Nell'ultimo esempio che ho fatto, l'utente ha la possibilità di specificare completamente il path e nome del file. L'utente potrebbe inserire qualunque cosa: un nome di file senza path, con path assoluto o anche relativo.

Se vuoi potresti chiedere all'utente solamente un nome e basta, il path completo poi lo componi tu nel programma.

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

....

char nomefile[40];
char path[200];
FILE *f;

printf ("Dammi solo il nome del file: ");
scanf ("%s", nomefile);

strcpy (path, "C:\\TEMP\\");
strcat (path, nomefile);

f = fopen (path, "w");
In questo modo l'utente deve inserire solamente un nome (es. "pippo.txt") e nel programma componi il path completo.
Certo ... l'utente potrebbe essere scaltro da inserire "..\pippo.txt" e in questo caso il file verrebbe aperto nella C:\. Ma qui si tratta sempre di stabilire cosa l'utente debba/possa fare o meno.

Re_Kotc
14-02-2007, 17:10
ecco ora so come fare!!! grazie mille :D...quando sarò un super programmatore me ne ricorderò :sofico: :Prrr: