Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-04-2007, 17:46   #1
Gandalf_BD
Senior Member
 
L'Avatar di Gandalf_BD
 
Iscritto dal: Jun 2004
Messaggi: 760
[C] tips & tricks della read()

Ciao a tutti...
avrei bisogno di un vostro aiuto...

dovrei leggere alcuni numeri da un file formattato in questa maniera:
Codice:
0
1
2
so che con la fscanf è cosa di un minuto, ma sarebbe preferibile farlo con la read(), e per ora non ci sono riuscito...
io ho messo un'istruzione:
Codice:
while(read(fd, buf, SIZE) > 0) etc..etc..
dove fd è un int che indica il descrittore del file (aperto con la open()) e buf un vettore di char.
Il fatto è che non funziona... legge solamente il primo numero, poi non torna più caratteri e il programma termina perchè su quella linea non c'è più niente...
come posso "farla andare a capo"?? (sono riuscito a spiegarmi?)

grazie, e buona Pasqua!
__________________
Gandalf_BD
--------------------------------------------
"When you aim at perfection, you discover it's a moving target"

Ultima modifica di Gandalf_BD : 08-04-2007 alle 17:46. Motivo: Mancavano gli auguri!!!
Gandalf_BD è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2007, 17:59   #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
Non credo sia quello il problema...alla read non importa assolutamente niente che tu sia arrivato in fondo alla riga....
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2007, 18:07   #3
Gandalf_BD
Senior Member
 
L'Avatar di Gandalf_BD
 
Iscritto dal: Jun 2004
Messaggi: 760
però, durante il debug, ho visto che il problema è su quell'istruzione... l'unico motivo di terminare il while è che la read torni 0... no?

EDIT: aspetta... effettivamente, la read legge subito 19 caratteri (che potrebbe essere tutto il file, visto che ci sono circa 5 righe...) e poi più niente...
quindi il problema è che non si ferma a fine riga... c'è un modo di farglelo fare, oppure è troppo a basso livello?

grazie ancora
__________________
Gandalf_BD
--------------------------------------------
"When you aim at perfection, you discover it's a moving target"

Ultima modifica di Gandalf_BD : 08-04-2007 alle 18:19. Motivo: ulteriori prove...
Gandalf_BD è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2007, 18:30   #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
La read non si ferma a fine riga...l'unico modo per farlo (se vuoi sempre usare read) è leggere un carattere alla volta...quindi imposti SIZE a 1 e ti fermi quando leggi il carattere di fine linea.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2007, 19:16   #5
sirus
Senior Member
 
Iscritto dal: Mar 2004
Messaggi: 16053
Se fai una lettura con read() ed utilizzi una SIZE di 1 byte devi tener conto che da quel file leggi anche i carattiri CR ed LF (se sei in ambiente MS-DOS/Windows) o LF (se sei in ambiente UNIX).
sirus è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2007, 19:25   #6
Gandalf_BD
Senior Member
 
L'Avatar di Gandalf_BD
 
Iscritto dal: Jun 2004
Messaggi: 760
grazie
quindi l'unico modo per farlo con la read() è leggere un byte alla volta...
__________________
Gandalf_BD
--------------------------------------------
"When you aim at perfection, you discover it's a moving target"
Gandalf_BD è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2007, 19:28   #7
sirus
Senior Member
 
Iscritto dal: Mar 2004
Messaggi: 16053
Quote:
Originariamente inviato da Gandalf_BD Guarda i messaggi
grazie
quindi l'unico modo per farlo con la read() è leggere un byte alla volta...
Se fai utilizzo di read() non puoi fare molto, sarebbe molto più comodo usare un fscanf() oppure una fread(), anche se considerando la costruzione del file la prima è preferibile.
sirus è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2007, 22:43   #8
Gandalf_BD
Senior Member
 
L'Avatar di Gandalf_BD
 
Iscritto dal: Jun 2004
Messaggi: 760
e se facessi una sscanf() sul buffer letto dalla read()?

lo so che è contorto, ma è giusto per curiosità
funzionerebbe, no? sarebbe l'equivalente di una fscanf(), giusto?
__________________
Gandalf_BD
--------------------------------------------
"When you aim at perfection, you discover it's a moving target"
Gandalf_BD è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2007, 10:08   #9
sirus
Senior Member
 
Iscritto dal: Mar 2004
Messaggi: 16053
Quote:
Originariamente inviato da Gandalf_BD Guarda i messaggi
e se facessi una sscanf() sul buffer letto dalla read()?

lo so che è contorto, ma è giusto per curiosità
funzionerebbe, no? sarebbe l'equivalente di una fscanf(), giusto?
La sscanf() a differenza della fascanf() non agisce su un buffer generico, come penseresti di usarla?
sirus è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2007, 10:37   #10
Gandalf_BD
Senior Member
 
L'Avatar di Gandalf_BD
 
Iscritto dal: Jun 2004
Messaggi: 760
ma io quello che legge la read() lo immagazzino in un buffer di tipo char [SIZE]...
__________________
Gandalf_BD
--------------------------------------------
"When you aim at perfection, you discover it's a moving target"
Gandalf_BD è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Gli iPhone di seconda mano dominano il m...
Pavel Durov (Telegram) lancia l'allarme:...
Occhiali Smart come lo smartphone: il fu...
Arriva NVIDIA GB300 NVL72, il cluster di...
Copilot si collega a OneDrive, Gmail e D...
Il Liquid Glass di iOS 26 è stato...
I biocarburanti fanno più danni d...
ELF, il Frankenstein di Mercedes che ant...
Da Kia arriva il passaporto per le batte...
The Elder Scrolls 6 renderà omagg...
YouTube dà una 'seconda chance' a...
Attacco hacker a Oracle E-Business Suite...
Wi-Fi 7 per tutti: FRITZ!Repeater 1700 p...
Chat Control: la proposta naufraga e vie...
A Minecraft Movie 2 si farà: il 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: 16:37.


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