PDA

Visualizza la versione completa : [C/C++]: Creare file e directory


maso1979
26-07-2006, 10:58
Ciao a tutti,nell ambito di un programma C, possibile creare un file con un certo nome e metterlo in una cartella diversa da quella corrente??Ossia possibile specificare il path?

oregon
26-07-2006, 11:01
Ovviamente s, altrimenti non funzionerebbero la gran parte dei programmi ...

Indica il path completo quando crei la cartella ...

maso1979
26-07-2006, 11:19
Ciao e grazie per la risposta,io sto utilizzando un sistema linux,e nell'ambito del programma ho creato una cartella in una certa posizione con la funzione mkdir("nome cartella",flag).Ora vorrei che un'altro programma C possa creare e scrivere file dentro la cartella appena creata.E' possibile farlo con fopen???se si in che modo??Ciao e grazie ancora!!

oregon
26-07-2006, 11:22
Indica il percorso completo nella fopen ...

U-bahn
26-07-2006, 11:23
certo che puoi, ad es. crea/apre il file specificato da linea di comando (o almeno ci prova)

se la cartella/il file contiene degli spazi, servono gli apici o i doppi apici (se usi questi ultimi, fai attenzione alle shell...)

es.
./a.out 'nome cartella/questo un file'
oppure
./a.out "${HOME}/dir/.bla bla bla @ @ @ . ?^"



#include <stdio.h>

int main(int argc, char **argv)
{
FILE *fnew;

if (argc != 2)
return 1;

fnew = fopen(argv[1], "a+");
if (fnew == NULL) {
printf("File %s not opend %s.\n", argv[1]);
return 1;
}
printf("File %s opend.\n", argv[1]);
if (fclose(fnew) != 0)
printf("File %s not closed. The system "
"should do it for us.\n", argv[1]);
else
printf("File %s closed.\n", argv[1]);
return 0;
}


:ciauz:

maso1979
26-07-2006, 11:28
Ti rompo le P...e un altro po :) Il mio problema che il file deve essere messo nella cartella appena creata e deve avere un nome che contiene giorno mese anno ore minuti secondi e un identificativo numerico.Come posso combinare il percorso con la striga che contiene suddetti valori??Ciao!!

U-bahn
26-07-2006, 11:48
Come posso combinare il percorso con la striga che contiene suddetti valori??Ciao!!

utilizzando strftime, ad es.



#include <stdio.h>
#include <time.h>

int main(int argc, char **argv)
{
char fname[21];
time_t epoch;
struct tm *date;
FILE *fnew;

epoch = time(NULL);
date = localtime(&epoch);
strftime(fname, 21, "%d_%h_%Y_%H:%M:%S", date);

fnew = fopen(fname, "a+");
if (fnew == NULL) {
printf("File %s not opend %s.\n", fname);
return 1;
}
printf("File %s opend.\n", fname);
if (fclose(fnew) != 0)
printf("File %s not closed. The system "
"should do it for us.\n", fname);
else
printf("File %s closed.\n", fname);
return 0;
}

maso1979
26-07-2006, 12:37
Grazie mille!!

Loading