Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
A New York HP ha messo al centro della scena HP IQ, la piattaforma di IA locale da 20 miliardi di parametri. L’abbiamo vista in funzione: è uno strumento che funziona, pensato per un target specifico, con vantaggi reali e limiti altrettanto evidenti
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
La PNY GeForce RTX 5080 Slim OC si distingue nel panorama delle GPU di fascia alta per il design compatto a due slot, ispirato alla NVIDIA GeForce RTX 5080 Founders Edition. In questo test analizziamo comportamento termico e prestazioni in gioco, valutando se il formato ridotto comprometta o meno l'esperienza complessiva rispetto alle soluzioni più ingombranti presenti sul mercato.
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
HUAWEI WiFi Mesh X3 Pro Suite è probabilmente il router mesh più fotogenico che si possa acquistare oggi in Italia, ma dietro il guscio in acrilico trasparente e le luci LED dinamiche c'è una macchina tecnica costruita attorno allo standard Wi-Fi 7, con velocità teoriche Dual-Band fino a 3,6 Gbps e una copertura fino a 120 m² una volta abbinato il router principale all'extender incluso nel kit
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-07-2005, 15:19   #1
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 6818
Strutture e files in C++

Salve ragazzi, vorrei sapere come si fa a salvare una struttura in un file. Tale struttura possiede un campo unsigned char* ed un campo int. In particolare, ho un'array di strutture da salvare in un file.Grazie.

Ultima modifica di Unrue : 29-07-2005 alle 15:26.
Unrue è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2005, 17:30   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ci sono tanti modi per salvare una struttura in un file...
Ad esempio:

struttura s;
....
....
....
ofstream out( "out.dat", ios::binary );
out.write((char*)&s, sizeof(char)*sizeof(struttura));

Questo funziona perfettamente quando i dati da salvare sono allocati staticamente, ma se i dati (come suppongo nel tuo caso) sono allocati dinamicamente ti conviene salvare la struttura membro a membro...

Supponendo struttura in questo modo e che m2 sia la lunghezza di m1 (ci ho beccato ?):

struct struttura
{
unsigned char *m1;
int m2;
};

struttura s;
....
....
....
ofstream out( "out.dat", ios::binary );
out.write((char*)&s.m2, sizeof(int));
out.write((char*)s.m1, sizeof(unisgned char)*m2);

Per la lettura si fa l'operazione inversa con la read...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2005, 18:11   #3
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 6818
Allora,
io ho definito il seguente array di strutture:

struct { unsigned char *code;
int nbit;
}Codici[256];

Nel main ho scritto:

ofstream out("D:/out.dat",ios::binary);

for(int g=0;g<256;g++){

out.write((char*)(Codici[g].code),sizeof(unsigned char)*code);

out.write((char*)&(Codici[g].nbit),sizeof(nbit));
}

Pero' non mi riconosce ne' il simbolo code ,nè nbit. cosa ho sbagliato?
Unrue è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2005, 18:32   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Così:

ofstream out("D:/out.dat",ios::binary);

for(int g=0;g<256;g++){

out.write((char*)&(Codici[g].nbit),sizeof(int));
out.write((char*)(Codici[g].code),sizeof(unsigned char)*dimensione);
//dimensione deve essere il numero di unsigned char allocati per il membro code
}
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 30-07-2005, 11:02   #5
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 6818
Dunque,
ho scritto:

ofstream out("D:/out.dat",ios::binary);

for(int g=0;g<256;g++){
out.write((char*)&(HuffmanCodes[g].nbit),sizeof(int));
out.write((char*)(HuffmanCodes[g].code),sizeof(unsigned char)*256);
}


ma mi da' un'errore alla riga

ofstream out("D:/out.dat",ios::binary);

di violazione di accesso nella classe template :

template <class _CharT, class _Traits>

Quindi non credo dipenda dal codice che ho scritto. In pratica non riesce a creare il file di output. Non so come mai.

Come dimensione ho provato anche ((numeroalberi-1)+8)>>3), dove numero alberi è appunto il numero degli alberi creati con il metodo di Huffman, ed è la dimensione usata quando ho scritto il codice nella struttura in questione. Solo che il problema lo dà prima di entrare nel ciclo for, quindi non ho idea da cosa dipenda.

Ultima modifica di Unrue : 30-07-2005 alle 11:06.
Unrue è offline   Rispondi citando il messaggio o parte di esso
Old 30-07-2005, 11:11   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
A me il codice sotto funziona benissimo con il compilatore MinGW32...scommetto che stai usando Visual C++...

ofstream out("D:\\out.dat",ios::binary);
out.write("pippo", 5);

Altrimenti prova in questo modo:

ofstream out;

out.open("D:\\out.dat",ios::binary);
out.write("pippo", 5);

Altrimenti prova così:

fstream out;

out.open("D:\\out.dat",ios::out || ios::binary);
out.write("pippo", 5);
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 30-07-2005, 12:02   #7
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 6818
No amico, sto usando il C++Builder X

Dunque, un po' è migliorato. Ho scritto:

fstream out2;

out2.open("D:\\out.dat",ios::out || ios::binary);

int q;
while(!feof(in3))

{q=fgetc(in3);

if(q>=0)

{ out2.write((char*)&(HuffmanCodes[q].nbit),sizeof(int));

out2.write((char*)(HuffmanCodes[q].code),sizeof(unsigned char)*((numeroalberi-1)+8)>>3);

}
}

Adesso, alla riga con l'intero non dà problemi o meglio, me li dà dopo qualche ciclo, ma a quella successiva si, sempre di violazione di accesso.
Unrue è offline   Rispondi citando il messaggio o parte di esso
Old 30-07-2005, 12:21   #8
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 6818
Dunque, ho inserito il codice usando l'ofstream direttamente nella funzione in cui riempo la struttura.Ad ogni codice inserito, segue la scrittura sul file out.dat. In questo modo sembra funzionare, il file lo crea e non dà alcuna eccezione. Certo che sono strani questi compilatori )

Comunque grazie, se avro' altri problemi ti ricontattero', ciao ciao.
Unrue è offline   Rispondi citando il messaggio o parte di esso
Old 30-07-2005, 14:18   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Comunque:

sizeof(unsigned char)*(((numeroalberi-1)+8)>>3)
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2005, 17:28   #10
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 6818
Ok, la struttura l'ho salvata. Adesso ,tramite la read, come ricreo la struttura? Tale funzione vuole un buffer di ingresso ed una lunghezza prefissata. COme le imposto tutte e due partendo dal fil eaperto in cui vi è salvata la struttura? Inoltre come riconosco se quello letto è un campo unsigned char* o int?
Unrue è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è PNY RTX 5080 Slim OC, sembra una Founders Editio...
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei Wi-Fi 7 con il design di una vetta innevata: ecc...
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte Core Ultra 7 270K Plus e Core Ultra 7 250K Plus:...
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu PC Specialist Lafité 14 AI AMD: assemblat...
I Meta Ray-Ban Display potrebbero non ar...
La serie di God of War ha trovato l'attr...
Il nuovo iPhone Fold si farà atte...
Ex CEO di Intel furioso verso Wall Stree...
Un foglietto di rame e le prestazioni di...
100 agenti AI per dipendente: quello che...
Le 10 migliori offerte del weekend Amazo...
75'' e 85'' QD-Mini LED: 2 TV interessan...
Offerte Amazon sui componenti hardware P...
iOS 27 porterà tante novità...
Tutte le migliori offerte sui robot aspi...
Attenti ai Samsung 990 Pro contraffatti,...
2 prezzi eccezionali: scope elettriche l...
Crimson Desert arriva anche su Switch 2?...
2 iPhone in offerta su Amazon: il 17 256...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:25.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v