Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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
ASUS Expertbook PM3: il notebook robusto per le aziende
ASUS Expertbook PM3: il notebook robusto per le aziende
Pensato per le necessità del pubblico d'azienda, ASUS Expertbook PM3 abbina uno chassis particolrmente robusto ad un pannello da 16 pollici di diagonale che avantaggia la produttività personale. Sotto la scocca troviamo un processore AMD Ryzen AI 7 350, che grazie alla certificazione Copilot+ PC permette di sfruttare al meglio l'accelerazione degli ambiti di intelligenza artificiale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-08-2003, 12:48   #1
x110
Senior Member
 
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
c -- sono scemo?

non mi scrive la struttura... perche'?
anzi mi scrive This buffer contains 34 charactersd

struct STRU{
int x;
char my;
char z;
};
#include <stdio.h>

int main ()
{
FILE * pFile;
struct STRU mys;
mys.x =100;
mys.my='a';
mys.z ='c';
char buffer[] = "This buffer contains 34 characters";
pFile = fopen ("myfile.txt" , "w+b");
fwrite (buffer , 1 , 34 , pFile);
fwrite (&mys , 1, sizeof(mys) , pFile);

fclose (pFile);
return 0;
}
x110 è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2003, 14:20   #2
asdalo
Junior Member
 
L'Avatar di asdalo
 
Iscritto dal: Aug 2003
Città: Firenze
Messaggi: 9
mmm a parte che non ho capito bene quale è lo scopo.. quindi potrei dire ca@@ate

nel tuo codice esegui due fwrite, la prima :

fwrite (buffer , 1 , 34 , pFile);

scrive esattamente il contenuto di buffer, cioè "This buffer contains 34 characters"

la seconda

fwrite (&mys , 1, sizeof(mys) , pFile);

scrive nel file la struttura mys.

Per farti un esempio, mys.x che tu imposti a 100 corrisponde infatti alla "d", quel carattere che vedi in fondo:

This buffer contains 34 charactersd

quindi... funziona, ammesso che dovesse fare questo :P
asdalo è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2003, 14:26   #3
x110
Senior Member
 
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
ok ma mi dovrebbe scrivere anche la 'a' e l'altra lettera.
vengo dal vb e gia' qua si spiega tutto,
vorrei scrivere delle strutture miste a stringhe riposizionandomi con fseek,
ma non ci riesco e non capisco perche'.
grazie
x110 è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2003, 14:49   #4
asdalo
Junior Member
 
L'Avatar di asdalo
 
Iscritto dal: Aug 2003
Città: Firenze
Messaggi: 9
Aprendo il file con un editor esadecimale vedo che ci è stato scritto una cosa così:

This buffer contains 34 charactersd ac

Ricordati che stai scrivendo strutture con tipi misti, quindi non lo puoi leggere sempre correttamente con editor di testo

Se vuoi fare una verifica veloce, scrivi solo la struttura e poi con una fread rileggila, vedrai che è tutto ok

Probabilmente è solo un problema di visualizzazione di notepad, o del progamma che stai usando, prova ad usare un editor esadecimale e vedrai carattere per carattere cosa c'è nel file
asdalo è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2003, 15:51   #5
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
Oppure scrivi con w+t e vedrai che i dati vengono scritti correttamente...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2003, 16:03   #6
x110
Senior Member
 
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
hai propio ragione, e' colpa di kwrite.
ero abituado ad usare notepad che qualcosa scrive.

ciao cionci. il t e' testo e mi crea qualche problema,,in quanto dovrebbe scrivere il il valore 100 come "100" 3 byte se e' cosi' preferisco lasciar perdere.

comunque grazie
x110 è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2003, 16:07   #7
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
Te lo consigliavo solo per vedere che scriveva tutto... Il testo lo leggi meglio
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2003, 21:41   #8
x110
Senior Member
 
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
no no son propio scemo.....

cioe' non capisco perche' la struttura e' lunga 8 e i singoli campi valgono 6.
int 4
char 1
char 1

in piu' al secondo perror mi dice illegal seek. perche'????

struct STRU{
char my;
char z;
int x;
};
#include <stdio.h>

int main ()
{
FILE * pFile;
int *pstru;
int w;
struct STRU mys;
pstru=mys.my;
mys.my='a';
mys.x =100;
mys.z ='c';
char buffer[] = "This buffer contains 34 characters";
pFile = fopen ("/myfile.txt" , "w+b");
fwrite (buffer , 1 , 34 , pFile);
perror("ciao1");
w=fwrite (&mys , 1,sizeof(mys),pFile);
perror("ciao2");
printf("sizeof(mys)= %d \nsizeof(mys.my)= %d \nsizeof(mys.z)= %d \nsizeof(mys.x)= %d\nw = %d\n",sizeof(mys),sizeof(mys.my),sizeof(mys.z),sizeof(mys.x),w);
fclose (pFile);
return 0;
}


questo e' l'output

ciao1: Success
ciao2 Illegal seek
sizeof(mys)=8
sizeof(mys.my)=1
sizeof(mys.z)=1
sizeof(mys.x)=4
w=8
x110 è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2003, 22:46   #9
bsummer
Senior Member
 
L'Avatar di bsummer
 
Iscritto dal: Oct 2002
Messaggi: 487
Mi sembra di ricordare che il tipo char è a 16 bit.

Ad esempio quando scrivi

char a;

a='\n';

Quel '\n" ti dice che la stringa è finita e di andare a capo, cioè è formato da due codici ascii, rispettivamente il 13 (carriage return) e il 10 (line feed).
Questo sotto windows/dos, perchè sotto linux c'è solo il 13 (mi pare).

Ma la mia memoria non è più quella di una volta quindi ci vuole qualcuno che confermi/smentisca.

Certo che se è come ricordo io, allora la questione del size torna che è un piacere (int 4 + char 2 + char 2 = 8 byte)

Aloha!
bsummer è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2003, 23:37   #10
x110
Senior Member
 
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
ok pero' sizeof(char)restituisce 1 e non 2.
non so dovrei controllare con il famose editor esadecimale
x110 è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2003, 23:46   #11
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da bsummer
Mi sembra di ricordare che il tipo char è a 16 bit.

Ad esempio quando scrivi

char a;

a='\n';

Quel '\n" ti dice che la stringa è finita e di andare a capo, cioè è formato da due codici ascii, rispettivamente il 13 (carriage return) e il 10 (line feed).
Questo sotto windows/dos, perchè sotto linux c'è solo il 13 (mi pare).

Ma la mia memoria non è più quella di una volta quindi ci vuole qualcuno che confermi/smentisca.

Certo che se è come ricordo io, allora la questione del size torna che è un piacere (int 4 + char 2 + char 2 = 8 byte)

Aloha!

Char non è a 8bit ? Mi sembra possa essere usato anke per interi dal -128 a 127 (ovvero 256 di range massimo che è un numero a 8 bit )

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2003, 08:30   #12
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
La somma dei vari campi è 6 byte...

4 byte per l'int e 1 byte per ogni char...
sizeof(mys) potrebbe anche essere giusto 8...infatti quando si va ad operare su una struttura si preferisce effettuare un allineamento ai 16 bit...

Accedere singolarmente ad un campo di memoria dispari è un'operazione storicamente poco agevole per le CPU x86... Per questo i compilatori effettuano un allineamento delle strutture ai 16 bit...

Probabilmente la struttura in memoria sarà memoriazzata in questo modo:
Codice:
31------23------15------7-------0
|  pad  |   z   |  pad  |  my   |
|             x 4 byte          |
31------23------15------7-------0
I campi che ho chiamato pad sono stati apunto inseriti per allineare i campi lunghi un byte ai 16 bit...
E questo dovrebbe avvenire per tutti i campi di lunghezza dispari (questa ottimizzazione mi sembra che si possa disabilitare dalle opzionid el compilatore)...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2003, 10:53   #13
x110
Senior Member
 
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
cionci sei grande.
quando parli hai la soluzione.
infatto l'ho provato a compilare in windows con un'altro compilatore e non e' successo.
per tua informativa, sappi che pero' i pad mi sono stati aggiunti alla fine del file.
(61)=a (63)=c ( 04 08 64 00)=100 (00 00)=pad
sai mica qual'e' impostazione per il compilatore?
perche' sto usando kdevelop e l'unica impostazione che e' settata e' wall

in piu' perche mi dice illegal seek sulla seconda write?

ciao

Ultima modifica di x110 : 28-08-2003 alle 11:00.
x110 è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2003, 10:59   #14
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
Sì ? Allora allinea direttamente la struttura ai 32 bit...
No, mi dispiace... Non me lo ricordo...

Prova a compilare con l'impostazione -O0 (O come Otranto Zero)...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2003, 11:03   #15
x110
Senior Member
 
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
ho modificato il messaggio ma tu avevi gia' risposto.....
x110 è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2003, 11:07   #16
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ì leggendo il codice non ho idea perchè ti dia illegal seek...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2003, 13:30   #17
bsummer
Senior Member
 
L'Avatar di bsummer
 
Iscritto dal: Oct 2002
Messaggi: 487
Quote:
Originariamente inviato da AnonimoVeneziano
Char non è a 8bit ? Mi sembra possa essere usato anke per interi dal -128 a 127 (ovvero 256 di range massimo che è un numero a 8 bit )

Ciao
Se size(char) di dà 1 allora chiaramente sto sbagliando io...

Tuttavia continuo a ricordare che c'è un linguaggio in cui il char è definito a 16 bit...appurato che C non è, pascal e Vb sono sicuro di no, cosa rimane? Boh... , ma visto che il problema è stato risolto alla fine non è importante

Aloha!
bsummer è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2003, 16:17   #18
x110
Senior Member
 
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
in realta' c'e' acora qualche problema
rileggi per favore.

il vb quando si parla di stringe generalmente le indica come unicode e un carattere occupa 2 byte.
ciao......

grazie.
x110 è offline   Rispondi citando il messaggio o parte di esso
Old 28-08-2003, 18:17   #19
bsummer
Senior Member
 
L'Avatar di bsummer
 
Iscritto dal: Oct 2002
Messaggi: 487
Quote:
Originariamente inviato da x110
in realta' c'e' acora qualche problema
rileggi per favore.

il vb quando si parla di stringe generalmente le indica come unicode e un carattere occupa 2 byte.
ciao......

grazie.
Mi sono letto il discorso dell'unicode...ho imparato qualcosa
Per quanto riguarda l'altro problema, boh , guardando il codice non mi sembra ci siano errori...

Aloha!
bsummer è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
Superati 13.300 MT/s per DDR5: ad ASUS e...
L’evoluzione dell’IA nelle imprese: la v...
Le storie in evidenza di Instagram torna...
Addio GeForce RTX 5060 e Radeon RX 9060?...
Arriva Hisense Déco TV S5Q, estet...
Aggiornata TOP500, la classifica degli H...
Noctua NH-D15 Chromax.black è rea...
NVIDIA aggiorna DGX Spark: nuovo kernel,...
Con Work IQ, Copilot per Microsoft 365 i...
Azure Cobalt 200: svelata la nuova CPU A...
Intel a tutto tondo: tra processi in ram...
AMD FSR Redstone arriverà ufficia...
L'Olanda 'cede' alla Cina: retromarcia t...
Stagione 1 al via: tutte le novità...
TikTok rafforza trasparenza e benessere ...
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: 21:11.


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