Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Polestar 3 Performance, test drive: comodità e potenza possono convivere
Polestar 3 Performance, test drive: comodità e potenza possono convivere
Abbiamo passato diversi giorni alla guida di Polestar 3, usata in tutti i contesti. Come auto di tutti i giorni è comodissima, ma se si libera tutta la potenza è stupefacente
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-03-2005, 19:55   #1
gio84
Member
 
Iscritto dal: Jan 2005
Messaggi: 199
Problema fseek

Come ho spiegato nel precedente post (c++ & EOF) quando tendo di modificare un file di struct alcune registrazioni vengono sovrapposte da dei duplicati.
Secondo me il problema principale è il (fread(&rut,sizeof(rut),1, stream)>0). Poi quando compilo esce anche questo warning per il segno "-" d'avanti sizeof:
"warning C4146: unary minus operator applied to unsigned type, result still unsigned"

ora vi posto l'intero codice:

FILE *stream = fopen("text.txt","r+");

printf("Inserisci il Cogome ");
gets(cogn);
printf("Inserisci il Nome ");
gets(nom);
while ((fread(&rut,sizeof(rut),1, stream)>0) && (tr==false))
{
if ((strcmp(rut.cognome,cogn)==0) && (strcmp(rut.nome,nom)==0)) ì
{
tr=true;
cout<<endl;
cout<<endl;
cout<<"Cognome "<<rut.cognome<<" ";
cout<<"Nome "<<rut.nome<<" ";
cout<<"Telefono "<<rut.num<<" ";
cout<<"Cellulare"<<rut.cell<<" ";
cout<<"Via/Piazza "<<rut.indirizzo.indiri;
cout<<" num "<<rut.indirizzo.n<<endl;

printf("Vuoi modificare questa Id? s/n");
gets(x);
if(x[0]=='s') {
cout<<"Cosa vuoi modificare?"<<endl;
cout<<"(1)Cognome,(2)Nome,(3)Telefono,(4)Cellulare,(5)Indirizzo,(6)civico,(0)Esci"<<endl;
cin>>h;
switch (h)
{
case 1:
{
printf("Inserisci Cognome ");
gets(rut.cognome);

break;
}
case 2:
{
printf("Inserisci Nome ");
gets(rut.nome);
break;
}
case 3:
{
printf("Inserisci Numero ");
gets(rut.num);
break;
}
case 5:
{
printf("Inserisci Indirizzo");
gets(rut.indirizzo.indiri);
break;
}
case 6:
{
printf("Inserisci civico");
gets(rut.indirizzo.n);
break;
}
case 4:
{
printf("Inserisci Cellulare");
gets(rut.cell);
break;
}
default:
if(h<0 || h>6)
{
cout<<endl;
cout<<"Inserisci un valore compreso tra 0 e 6"<<endl;
cout<<endl;
}

}
fseek(stream,-sizeof(rut),SEEK_CUR);
fwrite(&rut,sizeof(rut),1,stream);
}//chiude il secondo if che individua l'id

}//chiude il primo if che verifica se si vuole modificare o meno l'id


}//chiude il while

fflush(stream);
fclose(stream);
}

Ultima modifica di gio84 : 08-03-2005 alle 20:20.
gio84 è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2005, 18:30   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Re: Problema fseek

Quote:
Originariamente inviato da gio84
"warning C4146: unary minus operator applied to unsigned type, result still unsigned"
Questo lo elimini con un cast:
fseek(stream,-(int)sizeof(rut),SEEK_CUR);
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2005, 20:11   #3
bottomap
Member
 
Iscritto dal: Feb 2005
Città: Prato
Messaggi: 149
Ciao,
Due considerazioni:

1) Come dice ilsensine puoi evitare la warning sulla sizeof... sarebbe comunque più opportuno castarlo a long piuttosto che a int (fseek si aspetta proprio un long).

2) Non riesco comunque a capire il motivo di una seek all'indietro rispetto al current... istruzioni simili sono sempre convertibili in maniera migliore con una seek assoluta ad (i*sizeof())... sempre meglio usare la seconda forma anche per evitare alcuni problemi aggiuntivi.

3) Il discorso dei duplicati può derivare da un uso errato delle fseek... ricorda comunque che sizeof(struttura) non è detto sia effettivamente la somma della dimensione dei suoi campi... la grandezza di una struct è in genere allineata ad un certo limite che dipende dal compilatore (sotto MSVC sono 8 byte).

Ciaociao
__________________
Venite a visitarci qui:http://www.bottomap.com
Bottomap is a proud Masterdrive.it moderator
bottomap è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Ubisoft, dietro la trimestrale rimandata...
Gli sviluppatori di Genshin Impact hanno...
Poltronesofà colpita da ransomwar...
FSD e Autopilot: Tesla aggiorna i dati c...
Conclusa la campagna di osservazione del...
Il punto della situazione sulle offerte ...
Windows compie 40 anni, tra conquiste e ...
Black Friday Smartwatch: Amazfit, Apple,...
Operativo il primo Tesla Supercharger te...
Grok idolatra Elon Musk e lo considera s...
Il telescopio spaziale James Webb ha oss...
Record per l'energia eolica: nel Regno U...
Dell e HP rimuovono la codifica e transc...
Prezzo eccezionale per Samsung Galaxy S2...
Black Friday esplosivo: arrivano extra s...
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: 13:49.


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