Newsgroup: it.comp.lang.c++
Titolo: fopen_s

Salve a tutti
sto avendo difficoltà con questa funzione del c++
sto aggiornando un file scritto un paio di anni fà e il compilatore mi ha 
avvisato che alcune funzioni sono state modificate per questioni di 
sicurezza.
ho modificato la getch, la scanf e qualche altra, ma fin lì si trattava solo 
di sostituire il nome.
la fopen_s invece ha i parametri diversi rispetto alla fopen.
infatti fopen_s nei parametri ha
fopen_s(
FILE** pFile,
const char *filename
const char *mode
);
di diverso c'è quel FILE** pFile
che viene descritto come un puntatore al file puntatore che riceverà il 
puntatore al file aperto...
io nel mio programma ho
FILE *bi
...
...
if (((bi=fopen (nomefile,"rb"))==NULL))
errore=0
else
bla bla bla
così mi dà un warning e quindi poco male.
dato che sarebbe importante non avere neanche un warning, vorrei inserire 
fopen_s, ma non capisco proprio quel parametro...
qualcuno mi aiuta ?
grazie !
-- 
Ma tu l'hai visto il mio blog ???
http://alfaking.blogspot.com
Skype: Alfaking8
MSN: 
alfa...@hotmail.com
ICQ #145025749 

 fopen_s, ma non capisco proprio quel parametro...
Ovviamente:
   if (fopen_s(&bi, nomefile, "rb") == NULL) ...
-- 
     Carlo Milanesi
 
http://digilander.libero.it/carlmila

 qualcuno mi aiuta ?
'fopen_s' non č una funzione standard C o C++. Perciň la cosa migliore in 
primo luogo č consultare la documentazione del tuo compilatore.
Ma ti basta cercare "fopen_s" con Google. Il primo link che trovi ti porta 
a una pagina di MSDN, che tra le varie cose riporta anche un esempietto 
sufficientemente esplicativo:
 
http://msdn2.microsoft.com/en-us/library/z5hh6ee9.aspx
Max
 

   if (fopen_s(&bi, nomefile, "rb") == NULL) ...
mmm
ovviamente perchè ?
scusami se le domande ti sembrano stupide, ma sono un pò arrugginito.... 

 sufficientemente esplicativo:
e sì ma infatti quella pagina era quella che mi restituiva l'help del
compilatore...
ma mea culpa non capivo una cippa....

 ovviamente perchè ?
Perché così è spiegato nell'esempio. :)
Seriamente, che cos'è che non ti è chiaro? 'fopen' (quella standard) alloca
un'istanza di FILE e restituisce l'indirizzo ('FILE*'), che tu assegnerai a
qualche variabile. La versione "_s" si occupa direttamente di valorizzare
un puntatore a FILE e usa il valore di ritorno per comunicare un codice
d'errore al chiamante. Per fare questo, deve ricevere l'*indirizzo* di un
puntatore a FILE. Perciò il tipo dell'argomento sarà 'FILE**' e tu userai
l'operatore '&' per passare alla funzione l'indirizzo della tua variabile.
Max

 l'operatore '&' per passare alla funzione l'indirizzo della tua variabile.
ok...ci sono
grazie ! 

 nulla...
perchè nn funziona questa define ??? 


Non vorrei dire, ma tutto questo thread e' fuori tema, perche' riguarda
aspetti specifici di Visual C++. Rivolgiti a un newsgroup della
Microsoft.
Ciao,
Nicola

Microsoft.
Vabbè, ma che palle !!!
sto scrivendo in c++ e ho dei problemi.
questo ng si chiama lang.c++.
le mie domande dovrebbero essere pertinenti
non vedo perchè ci sia tutto questo astio nei confronti di chi ha dei 
problemi e vuole capire dove sbaglia !
anche perchè, anche se fossi chissà quanto OT (e non credo di esserlo), 
qualcuno potrebbe pure sforzarsi a rispondere (dato che sicuramente VOI ne 
sapete più di me...)
cmq sia grazie !

 sto scrivendo in c++ e ho dei problemi.
Ecco. Il primo problema che devi risolvere è quello di distinguere tra le
difficoltà legate al linguaggio (come può essere la comprensione della
questione del "doppio" puntatore, su cui ti ho risposto) e quelle legate al
sistema operativo, al framework, all'ambiente particolare in cui stai
sviluppando. Queste ultime non hanno nulla a che vedere con l'argomento del
gruppo. Si tratta di una distinzione importante. Se ti sembra sottile, ti
consiglio di approfondire meglio la questione.
Max

 consiglio di approfondire meglio la questione.
no no, non mi sembra sottile...
però magari, invece di rimandare su altri ng (su cui le risposte sono 
rare...) si possono provare altre vie, sempre rimanendo nella correttezza di 
una risposta cortese ad una domanda che non mi sembra scortese (nè OT, dal 
mio punto di vista...che a quanto capisco è sbagliato !) !
cioè, non è che ho chiesto
"meglio un pentium 12 o un amd 150 ?"
...
cmq sia, non voglio aprire flame, per cui chiudo quì la questione...
ma ti assicuro che non capisco a questo punto che tipo di domande sia 
possibile porre su questo ng (dato che anche la questione del doppio 
puntatore è legata ad una funzione che dipende strettamente da microsoft)...
spero di poter scrivere tra qualche giorno cose più inerenti a questo NG.
grazie cmq ! 

 sapete più di me...)
Invece e' meglio di no perche' quelli come te non vanno male abituati.
Se ti si risponde continuerai a inviare messaggi fuori tema e altri
come te si sentiranno incoraggiati a farlo. Purtroppo questo newsgroup
da sempre attira richieste da parte di persone che come te sono troppo
pigre per cercare il posto giusto dove porre i propri quesiti. Se non
si tiene un atteggiamento rigido il newsgroup si trasforma rapidamente
in una discarica, con l'effetto che i gia' pochi esperti che lo
frequentano si scocciano e se ne vanno.
Ciao,
Nicola

frequentano si scocciano e se ne vanno.
no no, se mi si risponde (e ti ripeto, dato che sono domande banali, credo 
che nessuno ci perda chissà cosa a rispondermi) si evitano solo polemiche 
inutili...
cmq sia, ti ripeto
non volevo essere maleducato
non voglio alimentare litigi o flame.
ringrazio quelle persone che mi hanno aiutato nei problemi 
"che-rientrano-nel-manifesto-del-ng" e spero di poter tornare tra un pò a 
scrivere domande che mi eviteranno polemiche futili e inutili. 

 contenuti maggiore rispetto agli altri che hai citato !
E' che it.comp.lang.c++.ma.solo.lo.standard.per.carita' non me l'hanno
accettato ;-)
Ciao,
Nicola

 inutili...
L'esperienza mostra il contrario.
L'esperienza mostra che non solo è possibile che tu stesso finisca con 
il fare altre domande non pertinenti, ma che tu o altri finirebbero per 
farle e poi additerebbero questo thread come esempio del fatto che tali 
  domande sono tollerate.
La netiquette implica:
1) leggere almeno un mese di post di un NG, prima di porre una domanda.
2) leggere il manifesto e le FAQ del newsgroup, prima di porre una 
domanda o dare una risposta
3) porre la domanda nel NG più pertinente e specifico
Non molto tempo fa qualcuno ha fatto una domanda OT e poi ha sostenuto 
che fosse corretto porla in quanto altri thread simili si erano 
verificati in passato. Ha persino postato un link ad un thread con una 
domanda molto simile.
Peccato che non si fosse accorto che il thread fosse di oltre 10 anni 
fa. E che da allora il manifesto sia cambiato.
Non ricordo chi fosse. Ma si era perlomeno sforzato (sebbene non 
abbastanza) di "fare i compiti" secondo la netiquette.
Quando gli si è fatto notare come stavano le cose però non ha insistito. 
Anzi: ha riconosciuto il suo errore.