Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-04-2007, 22:30   #1
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
[c] assegnare valori alle variabili da file di testo

sto facendo una rubrica ma ho un problema..
per salvare nel file uso fprintf(fp,"%s %s %s ",s[j].nome,s[j].cognome,s[j].numero) ma quando ho bisogno di passarle alle variabili non posso usare ne fscanf(fp,"%s%s%s",&s[j].nome,&s[j].cognome,&s[j].numero) perchè se poi nel nome o nel cognome ci sono spazi me li tronca e sballa tutto ne fgets perchè non posso sapere a priori quanto sono lunghe le stringhe. possono essere massimo di 14 caratteri + fine stringhe ma anche meno e non posso saperlo.. qualcuno può aiutarmi?
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 09:36   #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 diverse strategie in questo caso:
- fai dei campi di dimensione fissa
- usi dei separatori

Per fare campi di dimensione fissa:

Supponiamo che nome cognome e numero abbiano dimensione massima 30 caratteri + il fine stringa (quindi 31).

fprintf(fp,"%30s%30s%30s",s[j].nome,s[j].cognome,s[j].numero);
In questo modo ti aggiunge automaticamente degli spazi fino a riempire i 30 caratteri...
In lettura operi con fgets mettendo come limite di dimensione appunto 30 per ogni campo.

Per i separatori:

Ad esempio puoi usare un carattere (ad esempio la virgola o il pipe) come separatore:

fprintf(fp,"%s,%s,%s",s[j].nome,s[j].cognome,s[j].numero);
Dopo per la lettura puoi leggerti su una stringa la riga intera e poi separarla con dei semplici passaggi (o con strtok o con qualche algoritmo di tua invensione)...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 09:43   #3
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da ndakota Guarda i messaggi
sto facendo una rubrica ma ho un problema..
per salvare nel file uso fprintf(fp,"%s %s %s ",s[j].nome,s[j].cognome,s[j].numero) ma quando ho bisogno di passarle alle variabili non posso usare ne fscanf(fp,"%s%s%s",&s[j].nome,&s[j].cognome,&s[j].numero) perchè se poi nel nome o nel cognome ci sono spazi me li tronca e sballa tutto ne fgets perchè non posso sapere a priori quanto sono lunghe le stringhe. possono essere massimo di 14 caratteri + fine stringhe ma anche meno e non posso saperlo.. qualcuno può aiutarmi?
Ma i "record" di questa rubrica sono tutti su 1 riga unica o ognuno su una riga?? (non vedo \n nella fprintf, a meno che mandi il \n in seguito, non lo so...).

Comunque puoi innanzitutto scrivere le stringhe separate da un certo carattere speciale, per esempio il tab: fprintf(fp,"%s\t%s\t%s\t",.......
Quindi ti basta leggere la riga con fgets ma se come ho capito io hai tutto su 1 riga, allora potresti usare una funzione come quella che ho postato in <questo> thread, che è in grado di leggere una riga di lunghezza arbitraria.

Dopodiché spezzi la stringa usando strtok, mettendo come delimitatore il tab \t.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 09:59   #4
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da cionci Guarda i messaggi
Ci sono diverse strategie in questo caso:
- fai dei campi di dimensione fissa
- usi dei separatori

Per fare campi di dimensione fissa:

Supponiamo che nome cognome e numero abbiano dimensione massima 30 caratteri + il fine stringa (quindi 31).

fprintf(fp,"%30s%30s%30s",s[j].nome,s[j].cognome,s[j].numero);
In questo modo ti aggiunge automaticamente degli spazi fino a riempire i 30 caratteri...
In lettura operi con fgets mettendo come limite di dimensione appunto 30 per ogni campo.

Per i separatori:

Ad esempio puoi usare un carattere (ad esempio la virgola o il pipe) come separatore:

fprintf(fp,"%s,%s,%s",s[j].nome,s[j].cognome,s[j].numero);
Dopo per la lettura puoi leggerti su una stringa la riga intera e poi separarla con dei semplici passaggi (o con strtok o con qualche algoritmo di tua invensione)...
aiuto please ho usato il primo metodo ma me li stampa tutti sballati..
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2007, 10:12   #5
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
ho capito l'errore.. sballa tutto perchè nel file ignora gli spazi all'inizio, prima della prima stringa.. come posso rimediare a questo?
ndakota è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
SpaceX ritirerà ''a breve'' il Fa...
La Luna ha un nuovo cratere di grandi di...
ROG Cronox: ASUS alza l'asticella dei ca...
Lenovo annuncia nuovi sistemi per la vir...
M6 e M5 Ultra, i primi benchmark conferm...
La nuova falla della cybersecurity &egra...
The Blood of Dawnwalker, il sequel potre...
Colpiti i data center Amazon: irrecupera...
Google Wallet, nuova interfaccia in arri...
iPhone Duo, problemi di produzione per i...
Firefox diventa più veloce con PDF e JPE...
WhatsApp, arriva su iOS la nuova scorcia...
Snap presenta Specs: realtà aumentata, c...
SteamOS verso un cambiamento epocale: ar...
Recensione HUAWEI FreeBuds Neo, piccoli ...
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: 19:52.


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