PDA

View Full Version : [C++]Chi lo sa????


Naruto83
19-06-2006, 01:59
Qualcuno conosce qualche istruzione in C++, per creare una nuova cartella in un certo percorso, e per trasferire/copiare un file (il file è di estensione dll) all'interno della cartella....Grazie :mc:

trallallero
19-06-2006, 07:15
Qualcuno conosce qualche istruzione in C++, per creare una nuova cartella in un certo percorso, e per trasferire/copiare un file (il file è di estensione dll) all'interno della cartella....Grazie :mc:

ti basta anche un "semplice" C:

int mkdir(const char *path, mode_t mode);
int rename(const char *old, const char *new);

se cerchi su internet trovi la spiegazione, se hai linux/unix fai:
man -s2 mkdir
man -s2 rename

se proprio non trovi niente ti incollo la pagina man ;)

Naruto83
19-06-2006, 11:33
Grazie...e per il fatto del file

trallallero
19-06-2006, 11:57
Grazie...e per il fatto del file

Prego ... non ho capito "e per il fatto del file" :confused:

Ma ho fatto caso adesso al fatto che devi spostare una dll quindi immagino lavori su Windows (ma c'e' qualcun'altro che lavora su Unix come me ??? )
Se usi .NET o Borland Builder o altri ambienti del genere mi sa che ti conviene usare le funzioni apposta ;)
In quel caso deve intervenire qualcun altro ...

andbin
19-06-2006, 12:07
Grazie...e per il fatto del fileNon esistono funzioni "standard" in C/C++ per copiare/muovere file. Hai 2 possibilità: o ti crei appositamente delle funzioni per fare questo o vedi se il sistema operativo mette a disposizione delle funzioni specifiche.
Nel primo caso, per la copia ad esempio, apri i 2 file, sorgente/destinazione, leggi a blocchi di byte dal file sorgente e li scrivi sul file destinazione.
Su Windows puoi usare le funzioni Win32 CopyFile/CopyFileEx/MoveFile/MoveFileEx.

trallallero
19-06-2006, 13:03
Non esistono funzioni "standard" in C/C++ per copiare/muovere file. Hai 2 possibilità: o ti crei appositamente delle funzioni per fare questo o vedi se il sistema operativo mette a disposizione delle funzioni specifiche.
Nel primo caso, per la copia ad esempio, apri i 2 file, sorgente/destinazione, leggi a blocchi di byte dal file sorgente e li scrivi sul file destinazione.
Su Windows puoi usare le funzioni Win32 CopyFile/CopyFileEx/MoveFile/MoveFileEx.

sicuro che le funzioni che gli consigliato io non siano standard ? io le ho sempre trovate: windows, unix hp, system V, Solaris ...
la "rename" per ex e' dentro stdio.h ;)

BountyKiller
19-06-2006, 13:18
ti consiglio di utilizzare le api del sistema operativo e non le funzioni della libreria standard ( che comunque penso vengano wrappate in funzioni API comunque).....

BountyKiller
19-06-2006, 13:19
.

cj++
19-06-2006, 13:24
edit :stordita:

andbin
19-06-2006, 13:30
sicuro che le funzioni che gli consigliato io non siano standard ? io le ho sempre trovate: windows, unix hp, system V, Solaris ...
la "rename" per ex e' dentro stdio.h ;)Allora ... in effetti ho guardato adesso, rename() è ANSI "C" ed è in stdio.h. La documentazione del VC++ dice anche che è possibile spostare un file da una directory/device ad un'altra. (quindi ok ;) )
mkdir() invece non è ANSI "C" sebbene sia presente credo con tutti i compilatori (con VC++ bisogna includere direct.h).

Per la copia invece non mi risulta che ci sia qualcosa di "standard" (a parte eventuali funzioni specifiche del S.O. come quelle che ho menzionato).

trallallero
19-06-2006, 14:26
Allora ... in effetti ho guardato adesso, rename() è ANSI "C" ed è in stdio.h. La documentazione del VC++ dice anche che è possibile spostare un file da una directory/device ad un'altra. (quindi ok ;) )
mkdir() invece non è ANSI "C" sebbene sia presente credo con tutti i compilatori (con VC++ bisogna includere direct.h).

Per la copia invece non mi risulta che ci sia qualcosa di "standard" (a parte eventuali funzioni specifiche del S.O. come quelle che ho menzionato).

infatti mi ricordo gia' nei primi esercizi col Turbo C++ che mi chiedevo perche' non esistesse una funzione di copia :confused:
dovevo aprire il file in lettura, crearne uno di dest, leggere e scrivere ... allucinante :muro:
ma mi piaceva :D

Naruto83
19-06-2006, 15:01
quindi...dovrei creare un file (binario) nella directory di destinazione con la estensione dll, e copiarlo pezzo per pezzo da quello sorgente

trallallero
19-06-2006, 15:21
quindi...dovrei creare un file (binario) nella directory di destinazione con la estensione dll, e copiarlo pezzo per pezzo da quello sorgente

se non e' troppo grande puoi anche copiarlo tutto in una volta ;)

ma le funzioni che t'ha consigliato andbin no ?

Su Windows puoi usare le funzioni Win32 CopyFile/CopyFileEx/MoveFile/MoveFileEx.

Naruto83
19-06-2006, 16:08
E' grandicello quindi dovrei fare cosi:
includo windows.h ,creo la cratella con int mkdir(const char *path, mode_t mode); poi la rinomino con int rename(const char *old, const char *new); è utilizzo la funzione CopyFile(char *,char *,bool) per copiarci il file all'interno della cartella......penso ora vada tutto bene....se è cosi (spero), grazie a tutti per l'auito..... :D

trallallero
20-06-2006, 07:00
E' grandicello quindi dovrei fare cosi:
includo windows.h ,creo la cratella con int mkdir(const char *path, mode_t mode); poi la rinomino con int rename(const char *old, const char *new); è utilizzo la funzione CopyFile(char *,char *,bool) per copiarci il file all'interno della cartella......penso ora vada tutto bene....se è cosi (spero), grazie a tutti per l'auito..... :D

non ho capito ... perché la devi creare con un nome e poi rinominarla ? :confused:
non puoi crearla col nome giusto ?

Naruto83
20-06-2006, 09:51
Infatti è un pò sbagliato ma ora dovrebbe essere cosi:
includo windows.h, con la CreateDirectory creo la cartella e con la CopyFile ci copio il file...più semplice di cosi :D

trallallero
20-06-2006, 10:05
Infatti è un pò sbagliato ma ora dovrebbe essere cosi:
includo windows.h, con la CreateDirectory creo la cartella e con la CopyFile ci copio il file...più semplice di cosi :D
giá ... perché complicarsi la vita ? :p