Newsgroup: it.comp.lang.c
Titolo: FILE SPLITTER AIUTO

Salve a tutti, ho creato due piccoli programmini che dividono un file in più
parti di dimensione passata dall'utente e poi lo ricompongono. I soliti
programmini di split, insomma, ma volevo vedere in pratica quanto era
difficile (e devo dire che è veramente banale). Tuttavia, nonostante sotto
Linux funzioni benissimo, lo stesso codice portato sotto DOS e compilato con
DJGPP non funziona. Si compila senza warning nè errori, ma poi mi splitta
sempre un solo file, pieno di cose strane. Sicuramente il compilatore è
incompatibile... C'è qualcosa che non va ma cosa?
Nel programmino uso tutte istruzioni elementari, includo solo due file .h :
stdio.h e fcntl.h, evidentemente presenti anche sotto DJGPP ma differenti in
qualcosa rispetto al gcc del Linux... Le uniche chiamate a sistema sono
ovviamente quelle per i file: open, read, write, close con rispettive
opzioni e parametri.
QUALCUNO ha idea di come poter far girare anche sotto DOS lo splitty? Cos'è
che non piace al DJGPP?
GRAZIE A TUTTI!!!

 opzioni e parametri.
   *NON* usi nessuna delle funzioni che lo standard ISO reputa che 
debbano avere lo stesso comportamento su piattaforme differenti. 
Proponici il codice e potremo valutare quali sono i suoi punti deboli.
--
Alla prossima,
Marco

 opzioni e parametri.
Allora tiriamo fuori la sfera di cristallo e
vediamo cosa fa il tuo codice...
ah, ah... uh...interessante...hmmmm,
hm, non capisco niente.... mi sa che la mia sfera ha un bug...
:)

 che non piace al DJGPP?
Anche io ne avevo fatto uno, usando pero' fopen/fclose/fread/fwrite, che
sono standard.
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it

debbano avere lo stesso comportamento su piattaforme differenti. 
Pero', se non erro, DJGPP dovrebbe implementare anche lo
standard POSIX.
--
Andrea Laforgia - walkietalkie(at)
libero.it
http://www.geocities.com/AndreaLaforgia


Non ho incluso il codice perchè comunque sia sono un po' di righe ed anche
abbastanza arruffate (l'ho scritto di getto), anche se funziona. La mia idea
era che qualcuno magari potesse suggerirmi qualche modifica da fare al volo,
tipo sostituisci questa chiamata con quest'altra, è normale che non ti
funziona, è strano che non ti funziona etc.
ciao

 wrote in message
news:9os57m$g65$1...@pegasus.tiscalinet.it...

Allora meglio ridurre il codice fino ad arrivare ad una versione non
funzionante e minima. Non penso proprio che sia un problema di
incompatibilita' compiler. La cosa piu probabile potrebbe essere qualche
roba sullo stack. Ma come dicevo prima, con la sfera si puo' solo
ipotizzare, facciamo un primo tentativo:
char *readData(...) // qualche parametro come FILE *, o HANDLE o int...
{
    char data[1024];
    // carica data usando l'handle passato...
    return data;
}
i dati sono sullo stack e puo' essere che siano ancora validi quando usi il
valore restituito da readData, come non puo essere e dipende dal codice
creato dal compiler (non solo, anche da cosa fai dopo l'uso della funzione).

Tempo fa ho realizzato un programma del genere in C sotto Win32. Se vi
interessa lo trovate qui, ci sono anche i sorgenti. Ovvio che non garantisco
per la qualità del tutto ;-)
Dome
File Splitter:
http://www.redangel.it/beta_zone/Click_p.asp?ID_P=24
--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
PC Brain Official Web Site
http://digilander.iol.it/pcbrain
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Ho capito quanto intendi, quando parli dello stack. In effetti ho
controllato e le mie chiamate a sistema non fanno parte nè dello standard
ANSI nè di quello POSIX, tuttavia il DJGPP le riconosce altrimenti non
compilerebbe, quindi molto probabilmente hai ragione tu.Domani posto il
codice.
Grazie 6 molto gentile
ciao

 opzioni e parametri.
Male. Devi  aprire  il  file  con  fopen  specificando  anche  "b"  come
modalita` di  apertura. Ovviamente poi  devi usare anche  fread, fwrite,
fclose.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
La differenza fra l'intelligenza e la stupidita`?
All'intelligenza c'e` un limite.