Newsgroup: it.comp.lang.c
Titolo: Nuove Domande

Altro giro , altre domande ;-)
1) C'e' percaso un limite al numero di volte che si puo' aprire e
chiudere un file? (Per adesso uso questo per riportarmi all'inizio del
file e riiniziare a leggere i dati secondo un formato diverso).
Perche' se metto due fgets/sscanf nello stesso while (!feof) funziona
molto poco :-) Quindi per evitare degli fopen/close inutili.. c'e' un
modo per portarsi all'inizio del file?
2) C'e' percaso un limite al numero di if dichiarabili? Cioe' se
percaso io faccio un 2000-3000 (non chiedetemi perche' ;-) ) if ,
funzionera' lo stesso? Dico questo perche' in relazione a quanto sopra
, mi era capitato che per motivi a me sconosciuti non volesse aprire
un file (esistente)... Ho provato a includere 5-6 If tra /* e */ e
magicamente funzionava.. Poi ho risolto tramite qualche giro intorno..
e sono riuscito ad andare avanti.. solo che mi e' venuto questo
dubbio..
3) Usando un vettore del tipo *msg[]={"aaa","bbb","ccc"}; e' possibile
fare l'inverso del chesso' printf("%s",msg[1]); che stamperebbe "bbb"?
E cioe' sapendo che una delle stringhe sia "bbb" risalire allo "slot"
dove e' collocata? (Cioe' una sorta di printf("%d",msg[bbb]); che
pero' mi pare non funzioni (array index must be int or char (?) ).
4) C'e' nel C l'equivalente del basic sub/return? Cioe' se io provassi
a fare goto a; (anche se non capisco perche' il Kerninghan lo
sconsigli altamente ;-) Era cosi' bello! ;-))) ) e quindi a:
[istruzioni varie]; return; (non ho provato) ritornerebbe subito dopo
il punto lanciato? Potrei benissimo farne a meno pero' almeno per la
chiarezza visiva sarebbe utile (cioe' sscanf trova una certa
variabile.. l'if la controlla e se corrsiponde ad una certa cosa
incrementa in un certo modo.. Se pero' gli IF sono molti e le
variabili da incrementare sono abbastanza (diciamo un 4-5) sarebbe
comodo avere tutte le operazioni da fare in una parte separata del
programma..
5) Ci sono comandi che sostituiscano determinati caratteri con altri?
(Particolarmente utile in quanto lo sscanf quando deve "prendere"
alcune stringhe le fa finire al primo spazio che incontra.. questo va
bene.. pero' nel caso si incontrasse una stringa su piu' parole che
dovrebbe essere presa come una sola si incasina tutto quanto.. Quindi
ho pensato.. invece di scrivere aaa bbb posso fare aaa.bbb che
verrebbe presa come singola stringa , pero' non ho trovato il comando
che sostituisca il carattere "." con " " ;-) (ma solo io ci penso a
questi comandi??? :-) ).
6) Qual'e' il nome della compilation Microsoft che contine Visual
C,Basic,e J? E buoni libri sulla programmazione C++,Basic e Java?
Ok per ora possono bastare..
PS : Durante un'esecuzione di una versione buggata del mio programma
(ehm ora sono arrivato alla 0.1.241 (nel senso che la ver 0.1 e' stata
ricompilata 241 volte (!!!).. la BUILD insomma ;-)))--- e che per
scoprire , individuare , isolare e tentar di eliminare un bug passano
minimo 20-30 ricompilazioni!! ) mi e' capitato che *non solo* si sia
bloccato tutto , ma che si sia ANCHE spento il computer , e che al
successivo riavvio il W95 mi dicesse che il file "krnl386.exe" era
danneggiato (!!!!!) .. Fortunatamente al riavvio successivo tutto si
e' aggiustato da solo ;-) Che faccia meglio a programmare virus invece
di pseudo programmini forse utili? :-)
PPS: Ecco l'errore si e' ripresentato.. Ho aggiunto un if relativo a
come trattare l'input letto da un file. E il programma dice che non
puo' aprire il file (ritorna NULL , infatti ho messo una condizione
che nel caso dovesse riportare NULL , terminasse il programma).
Il bello e' che QUALUNQUE if tolga , torna a funzionare ;-) ANCHE se
io tolgo un IF da una parte del programma DOPO a quella in cui dice
che non puo' aprire il file.. Perche'? Perche'!!! :-(
  Adalberto Simeone -==(U.D.I.C.)==- Avenger Dragon
       E-Mail: 
lafc...@tin.it
 UIN: 1414193

...
 Altro giro , altre domande ;-)
 
 1) C'e' percaso un limite al numero di volte che si puo' aprire e
 chiudere un file? (Per adesso uso questo per riportarmi all'inizio del
 file e riiniziare a leggere i dati secondo un formato diverso).
 Perche' se metto due fgets/sscanf nello stesso while (!feof) funziona
 molto poco :-) Quindi per evitare degli fopen/close inutili.. c'e' un
 modo per portarsi all'inizio del file?
fseek(puntatore_file,0,SEEK_SET);		// Si posiziona a 0 byte dall' origine
del file
 
 2) C'e' percaso un limite al numero di if dichiarabili? Cioe' se
 percaso io faccio un 2000-3000 (non chiedetemi perche' ;-) ) if ,
 funzionera' lo stesso? Dico questo perche' in relazione a quanto sopra
 , mi era capitato che per motivi a me sconosciuti non volesse aprire
 un file (esistente)... Ho provato a includere 5-6 If tra /* e */ e
 magicamente funzionava.. Poi ho risolto tramite qualche giro intorno..
 e sono riuscito ad andare avanti.. solo che mi e' venuto questo
 dubbio..
dipende dal tuo compilatore, ma credimi: non gli utilizzerai mai tutti.
 
 3) Usando un vettore del tipo *msg[]={"aaa","bbb","ccc"}; e' possibile
 fare l'inverso del chesso' printf("%s",msg[1]); che stamperebbe "bbb"?
Qui non ho capito quale sia la tua domanda
 
 E cioe' sapendo che una delle stringhe sia "bbb" risalire allo "slot"
 dove e' collocata? (Cioe' una sorta di printf("%d",msg[bbb]); che
 pero' mi pare non funzioni (array index must be int or char (?) ).
Ah! Scusa. Si puo' fare tutto con il C, ma non esiste una funzione che io
sappia che faccia quella cosa
almeno che non la faccia tu (e quando l' ai fatta fammela avere).
 
 4) C'e' nel C l'equivalente del basic sub/return? Cioe' se io provassi
 a fare goto a; (anche se non capisco perche' il Kerninghan lo
 sconsigli altamente ;-) Era cosi' bello! ;-))) ) e quindi a:
 [istruzioni varie]; return; (non ho provato) ritornerebbe subito dopo
 il punto lanciato? Potrei benissimo farne a meno pero' almeno per la
 chiarezza visiva sarebbe utile (cioe' sscanf trova una certa
 variabile.. l'if la controlla e se corrsiponde ad una certa cosa
 incrementa in un certo modo.. Se pero' gli IF sono molti e le
 variabili da incrementare sono abbastanza (diciamo un 4-5) sarebbe
 comodo avere tutte le operazioni da fare in una parte separata del
 programma..
nel C il goto e' sconsigliato perche' non e' nella sua filisofia (per il
resto il goto si traduce in un' istruzione macchina
del tipo jmp). Il return fa ritornare il punto di lettura programma
(referenziato dai registri CS:IP) all ' ultima istruzione call eseguita
(nel C non le vedi perche sono eseguite 'dal nome della funzione').
 
 5) Ci sono comandi che sostituiscano determinati caratteri con altri?
 (Particolarmente utile in quanto lo sscanf quando deve "prendere"
 alcune stringhe le fa finire al primo spazio che incontra.. questo va
 bene.. pero' nel caso si incontrasse una stringa su piu' parole che
 dovrebbe essere presa come una sola si incasina tutto quanto.. Quindi
 ho pensato.. invece di scrivere aaa bbb posso fare aaa.bbb che
 verrebbe presa come singola stringa , pero' non ho trovato il comando
 che sostituisca il carattere "." con " " ;-) (ma solo io ci penso a
 questi comandi??? :-) ).
Scommetto che arrivi dal basic vero ?
 
 6) Qual'e' il nome della compilation Microsoft che contine Visual
 C,Basic,e J? E buoni libri sulla programmazione C++,Basic e Java?
 
 Ok per ora possono bastare..
 
 PS : Durante un'esecuzione di una versione buggata del mio programma
 (ehm ora sono arrivato alla 0.1.241 (nel senso che la ver 0.1 e' stata
 ricompilata 241 volte (!!!).. la BUILD insomma ;-)))--- e che per
 scoprire , individuare , isolare e tentar di eliminare un bug passano
 minimo 20-30 ricompilazioni!! ) mi e' capitato che *non solo* si sia
 bloccato tutto , ma che si sia ANCHE spento il computer , e che al
 successivo riavvio il W95 mi dicesse che il file "krnl386.exe" era
 danneggiato (!!!!!) .. Fortunatamente al riavvio successivo tutto si
 e' aggiustato da solo ;-) Che faccia meglio a programmare virus invece
 di pseudo programmini forse utili? :-)
 
 PPS: Ecco l'errore si e' ripresentato.. Ho aggiunto un if relativo a
 come trattare l'input letto da un file. E il programma dice che non
 puo' aprire il file (ritorna NULL , infatti ho messo una condizione
 che nel caso dovesse riportare NULL , terminasse il programma).
 
 Il bello e' che QUALUNQUE if tolga , torna a funzionare ;-) ANCHE se
 io tolgo un IF da una parte del programma DOPO a quella in cui dice
 che non puo' aprire il file.. Perche'? Perche'!!! :-(
 
   Adalberto Simeone -==(U.D.I.C.)==- Avenger Dragon
        E-Mail: 
lafc...@tin.it
 UIN: 1414193
 
Scusa per le domande a cui non ho risposto !

alcune stringhe le fa finire al primo spazio che incontra.. questo va
Leggi meglio la documentazione delle funzioni scanf-like, particolarmente 
per quanto riguarda la dimensione dei campi da accettare, e trova una 
soluzione in quel senso (es. puoi usare "%XXc" dove XX e' il numero di 
caratteri da leggere al posto di "%s", occhio che poi pero' devi mettere 
il terminatore sulla stringa ottenuta)
-- 
Warning!
Don't send any mail for me at my from: or replayto: addresses ;
I just kill the mail over there without reading!

Scusa per le domande a cui non ho risposto !
Ho risolto.. ma non so per quale assurdo motivo.. cioe' io prima usavo
if((out=fopen("file","r"))=NULL) return;
else.....
Cosi' se aggiungo un IF.. il programma termina perche' l'out=fopen
risulta null.
Se invece tolgo l'if e' faccio un 
out=fopen("file","r"); 
funziona :-) con quanti if voglio.. (almeno credo) ... pero' cosi' non
c'e' nessun failsafe! ;-)


 C,Basic,e J? E buoni libri sulla programmazione C++,Basic e Java?
"Microsoft Visual Developer's Studio", mi pare.  E la loro versione
Java si chiama J++, non solo J.
I migliori testi introduttivi a C++, secondo me: Lippman e Lajoie, 
"C++ Primer", 3a edizione; didatticamente meno valido, ma pur
sempre interessante, lo Stroustrup, "The C++ Programming
Language", 3a edizione -- in entrambi i casi e' cruciale avere la
3a edizione (e nel caso di Stroustrup, molto consigliabile avere
un "printing" recente, se no passano le ore ad apportare tutti gli
errata).  Stroustrup credo che esista anche in italiano, ma bisogna
verificare che sia una traduzione della 3a edizione.
Per Java, "Thinking in Java" di Bruce Eckel, gratuitamente
scaricabile da 
www.BruceEckel.com
 oltre che acquistabile su
carta, e' veramente eccezionale.  Buono anche il tutorial che
si puo' scaricare da 
www.javasoft.com
 (non allo stesso livello
dell'Eckel, pero').  Infine, "Just Java 1.1" di Linden (anche qui
e' cruciale quell'1.1 -- NON prendere la versione 1.0, che temo
sia la sola disponibile ad oggi in italiano).
Per Basic, non conosco un testo introduttivo che sia veramente
eccellente.  "Hardcore Visual Basic" (esiste anche in Italiano,
ed. Mondadori) e' ottimo, ma NON introduttivo.
Alex


Adesso, non per dire, sei sicuro che sia giusto?
Non e' che per caso ti sei dimenticato un =?
Quello che stai facendo e' assegnare NULL a out, e questo riesce
sempre, quindi ritorna...
if ((out = fopen ("file", "r")) == NULL) 
Okkio a '=' e '=='
(Sono i tipici errori che ti fanno girare le palle perche' NON te ne
accorgi mai...)
--
Saluti
Per rispondere sostituire coperto con iname


: wrote:
[ snip ]
: Ho risolto.. ma non so per quale assurdo motivo.. cioe' io prima usavo
: if((out=fopen("file","r"))=NULL) return;
: else.....
Guarda che stai *assegnando* NULL a out.
Quello che tu volevi scrivere era:
if((out = fopen("file", "r")) == NULL) return;
                             ^^^^
Ciao ciao
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

momento sto usando 
Allora lascialo stare subito, non ci combinerai granche' di buono. fseek() 
e' una funzione standard ANSI, e deve essere supportata da qualsiasi 
compilatore degno di questo nome.
Se ti interessa un buon compilatore totalmente free per dos cerca il 
DJGPP, forse un po' ostico da usare ma senz'altro migliore di quello che 
usi.


DJGPP, forse un po' ostico da usare ma senz'altro migliore di quello che
Tra l'altro é in edicola proprio adesso, nel CDROM del numero
17 di IoProgrammo (che contiene anche il GnuWin32 b19, per
Windows 32bit), quindi é particolarmente comodo trovarlo.
Alex

Developer...) qual'e' quello giusto (o il nome del file..) ;-)
Compra ioProgrammo 17. C'e' tutto intero
