Torna indietro   Hardware Upgrade Forum > Software > Programmazione

PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu
Il modello "build to order" di PCSpecialist permette di selezionare una struttura base per un sistema, personalizzandolo in base alle specifiche esigenze con una notevole flessibilità di scelta tra i componenti. Il modello Lafité 14 AI AMD è un classico notebook clamshell compatto e potente, capace di assicurare una elevata autonomia di funzionamento anche lontano dalla presa di corrente
Recensione Nothing Phone 4(a): sempre iconico ma ora più concreto
Recensione Nothing Phone 4(a): sempre iconico ma ora più concreto
Nothing con il suo nuovo Phone 4(a) conferma la sua identità visiva puntando su una costruzione che nobilita il policarbonato. La trasparenza resta l'elemento cardine, arricchita da una simmetria interna curata nei minimi dettagli. Il sistema Glyph si evolve, riducendosi nelle dimensioni ma aumentando l'utilità quotidiana grazie a nuove funzioni software integrate e notifiche visive. Ecco tutti i dettagli nella recensione completa
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale
Nelle ultime settimane abbiamo provato la Corsair Vanguard Air 99 Wireless, una tastiera tecnicamente da gaming, ma che in realtà offre un ampio ventaglio di possibilità anche al di fuori delle sessioni di gioco. Flessibilità e funzionalità sono le parole d'ordine di una periferica che si rivolge a chi cerca un prodotto capace di adattarsi a ogni esigenza e ogni piattaforma
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-04-2007, 18: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 18:46. Motivo: Mancavano gli auguri!!!
Gandalf_BD è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2007, 18: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, 19: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 19:19. Motivo: ulteriori prove...
Gandalf_BD è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2007, 19: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, 20: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, 20: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, 20: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, 23: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, 11: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, 11: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


PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu PC Specialist Lafité 14 AI AMD: assemblat...
Recensione Nothing Phone 4(a): sempre iconico ma ora più concreto Recensione Nothing Phone 4(a): sempre iconico ma...
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale Corsair Vanguard Air 99 Wireless: non si era mai...
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lav...
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo Recensione Samsung Galaxy S26 Ultra: finalmente ...
Scivolone ASRock: annuncia il Ryzen 9 99...
DLSS 5: NVIDIA spiega il funzionamento, ...
PlayStation come NVIDIA DLSS: Sony punta...
OnePlus Nord 6 sta arrivando e avr&agrav...
CPU desktop: Intel dice addio ai socket ...
Google sta testando un'app di Gemini per...
NVIDIA GeForce RTX 5070 Laptop: in arriv...
Il Tribunale di Roma ha annullato la mul...
AppleCare One potrebbe arrivare presto i...
Amazon ci riproverà: l'azienda st...
Apple e Samsung dominano la classifica d...
Un game designer di 9 anni, due fogli a ...
Il weekend Amazon parte col botto: gross...
Amazfit Active 2 scende a 69,99€: i migl...
Smart TV No IVA su Amazon: QLED, Mini-LE...
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: 00:48.


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