Newsgroup: it.comp.lang.c++
Titolo: mkdir e directory annidate.

Se voglio creare un path in cui più ci sono più livelli di directory
annidate non esistenti, l'istruzione mkdir sembra non funzionare...
Cioè funziona se voglio creare un path ad un livello di directory, ma non a
più livelli del tipo c:\new1\new2
Confermate?? Come posso risolvere ?
Grazie mille a tutti
Gianni
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

mkdir è ansi? l'MSDN non me lo dà come ansi... Quindi potrei dirti che
questo non è il newsgroup adatto :-)
Cmq... Ti sei già dato la risposta da solo: le crei un livello alla volta.
Crei c:\new1 e poi c:\new1\new2. Direi 20/30 linee di codice (dipende da
quanto figo lo vuoi fare). In DOS in effetti se ci pensi non c'è un mkdir
ricorsivo, e neanche nella shell standard del linux mi sembra.
Potresti avere un problema perchè non c'è la maniera di scoprire se una
directory è già presente oppure no. Prova questo: provi a entrarci, se te la
da buona OK, se no provi a crearla. Se te la da buona ci entri, se no
abortisci (magari c'è già un file con quel nome).
strtok può essere tuo amico nel dividere la stringa in sottostringhe (cerca
la '\' e/o la '/')
--- bye

 questo non è il newsgroup adatto :-)
 >
E' POSIX. E l'MSDN non mi pare il posto piu' adatto per cercare 
documentazione "standard"...
-- 
Roal Zanazzi

 documentazione "standard"...
Vedi che avevo ragione? E' POSIX! Questo non è un newsgroup di POSIX, che è
uno standard nato nel mondo UNIX e tuttora residente nel mondo UNIX (ma non
molto nel mondo MS)!
E per quanto riguarda la "purezza" della documentazione, in ogni funzione
del CRT l'MSDN scrive se è ANSI o se è supportata solo dalla MS. Chiaramente
ci trovi anche funzioni non ANSI (a bizzeffe). Ma se guardi il man della
glibc ci trovi funzioni POSIX a bizzeffe, quindi siamo pari. Per quanto
riguarda l'adeguatezza dello standard, da quello che ne so il 
MSVC.NET
 è
molto ben messo per quanto riguarda gli standard C++ (non al livello del
Comeau cmq se ben ricordo), e dovrebbe essere C89 per quanto riguarda il C.

 standard, ma non e` il C++ standard [cmq siamo d'accordo. e` OT]
Sì, ma se lui ti avesse fatto una domanda sulle boost o sulla libsig allora
probabilmente gli avresti risposto senza lamentarti tanto, perchè sono due
librerie "generiche" di C++ che vengono viste come estensioni dello stesso e
che, si spera, in parte verranno accettate dall'ISO/ANSI. Invece POSIX è una
cosa prettamente Unix.
--- bye

 Confermate?? Come posso risolvere ?
Lasciato perdere il discorso INUTILE se mkdir è IT od OT, invece 
l'algoritmo può essere interessante ed IT.
La soluzione, già adottata nel sw che sviluppiamo da noi in ditta, è 
semplice:
Preso tutto il path, controlli se già esiste, altrimenti togli l'ultimo 
folder fino allo slash [\new2] e ricorsivamente ricontrolli il nuovo 
path. In uscita dalla ricorsione crei un folder alla volta. Più o meno:
funzione creapath(path)
  se path non esiste
    elimina ultimo folder da path
    creapath(path)
    mkdir path
end
(salvo errori od omissioni...)
-- 
Luc

 end
Grazie la trovo molto pulita come soluzione, ma non hai anche a portata di
mano il codice??
Se almeno mi passassi la codifica di quel "elimina ultimo folder da path"..
Grazie comunque


 Se almeno mi passassi la codifica di quel "elimina ultimo folder da path"..
Cerca l'ultimo slash del path e poi prendi tutta la stringa che sta a 
monte! 
-- 
Luc

 monte!
 Vabbè sono un neofita del C++ però a questo livello ci ero arrivato da solo
:)
è che non conosco le funzioni che vanno usate per questo scopo ne le trovo
sui manuali che ho a disposizione...
conosco strtok ma non sembra faccia al caso mio...


 sui manuali che ho a disposizione...
posso permettermi di consigliarti lo Stourstrup?
descrive in maniera approfondita i vari algoritmi della libreria
standard e le operazioni sulle stringhe.



Grazie per il consiglio, ma scusa l'ignoranza...
dove lo trovo??


 dove lo trovo??
Essendo un libro lo trovi in libreria... o in biblioteca.
Ma attento che il cognome giusto e' Stroustrup e non Stourstrup
come indicato sopra.
Se vai su 
www.internetbookshop.it
 (solo per fare un esempio)
trovi il titolo esatto e l'editore.
Oppure facendo una ricerca con un metaopac (tipo
http://azalai.cilea.it/mai/
 )
puoi vedere se lo trovi in una biblioteca vicino
a te o chiedi il prestito interbibliotecario.
ciao,
g.

 come indicato sopra.
typo, sorry... me lo metto nell'ispell ;)
