Torna indietro   Hardware Upgrade Forum > Software > Programmazione

NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
Dopo anni di attesa e una lunga fase di sviluppo, Noctua entra nel mercato dei dissipatori a liquido AIO con la nuova serie NL-LC1. Forte dell'esperienza maturata nel raffreddamento ad aria, l'azienda austriaca promette di portare la propria filosofia fatta di qualità costruttiva, attenzione ai dettagli e silenziosità anche in questo segmento. Abbiamo provato il nuovo sistema per scoprire se riesce a distinguersi in un mercato ormai molto competitivo.
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Arrivato sul mercato italiano a fine marzo, la serie Boox Go 10.3 (Gen II) offre Android 15, penna da 4096 livelli e retroilluminazione opzionale (nel modello da noi provato, Lumi, presente). La serie si compone di due tablet ePaper che fanno da e-reader, blocco note digitale e persino browser, tutto a un prezzo che fa dimenticare i prodotti di brand più blasonati
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming
Pannello QD-OLED da 32 pollici con risoluzione 4K, frequenza di aggiornamento a 240Hz e tempi di risposta rapidissimi: il Gigabyte MO32U24 evolve il progetto del suo predecessore MO32U e alza ulteriormente l'asticella delle prestazioni. È ancora una volta un monitor indirizzato ai giocatori più esigenti
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-06-2006, 14:27   #1
scarface7
Junior Member
 
Iscritto dal: Apr 2006
Messaggi: 15
[C] caricamento elenco da file

salve ragazzi,
avrei una cosa da chiedervi:
devo fare un programma che mi carichi un elenco di auto da file con la seguente sintassi:
!marca!modello!prezzo!

ho creato la seguente funzione:

int carica(FILE *f,automobile el[])

{
int i,k;

for(i=0;!feof(f);i++){


for(k=0;(el[i].marca[k]=fgetc(f))!='!';k++);
el[i].marca[k]='\0';
for(k=0;((el[i].modello[k]=fgetc(f))!='!')&&!feof(f);k++);
el[i].modello[k]='\0';
fscanf(f,"%f \n ",&(el[i].prezzo));
}

return i;

}


vorrei chiedervi come devo fare per far caricare anche il primo punto esclamativo !...?

riesco solo a caricare marca,modello e prezzo,ma a causa del mancato caricamento del primo punto esclamativo a video l'elenco mi compare molto male..

ringrazio anticipatamente per le vostre risposte...
scarface7 è offline   Rispondi citando il messaggio o parte di esso
Old 15-06-2006, 14:41   #2
Andlea
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 357
non fai prima con
Codice:
fscanf("!%s!%s!%f!", el[i].marca, el[i].modello, &el[i].prezzo);
?
Andlea è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 12:25   #3
scarface7
Junior Member
 
Iscritto dal: Apr 2006
Messaggi: 15
no non mi carica nulla se faccio come dici tu...

chi altro saprebbe darmi un aiuto..per piacere
scarface7 è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 13:11   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da scarface7
chi altro saprebbe darmi un aiuto..per piacere
Potresti magari postare la dichiarazione della struttura automobile??
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 14:09   #5
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da scarface7
no non mi carica nulla se faccio come dici tu...
perche' ci sono i ! dentro il file

prova cosi':
Codice:
int carica(FILE *f,automobile el[]) 
{
   int i,k;

   for(i = 0; !feof(f); i++ )
   {
      el[i].marca[0] = fgetc(f);
      for( k = 1; (el[i].marca[k] = fgetc(f)) != '!'; k++ )
         ;   
      el[i].marca[k] = '\0';

      el[i].modello[0] = fgetc(f);
      for( k = 1; ((el[i].modello[k] = fgetc(f)) != '!' ) && !feof(f); k++ )
         ;
      el[i].modello[k]='\0';


      el[i].prezzo = '!';
      fscanf( f, "%f \n ",&(el[i].prezzo+1));
   }
   return i;
}
scusa se ho reindentato ma era per capire ... non posso sdeindentarlo dopo

in pratica leggi il primo carattere (!) e il ciclo parte da 1 anziche da 0

non so se ci sono errori non ho compilato e controllato bene. Comunque non e' un bel sistema, per me, per gestire records su file
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 14:47   #6
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Mi sa che:
Codice:
   el[i].modello[0] = fgetc(f);
la devi sostituire con:
Codice:
   el[i].modello[0] = '!';
perche' il char '!' l'ha gia' letto ed e' quello che fa interrompere il ciclo precedente.

Comunque ti consiglio records a lunghezza fissa.
In C gia' e' dura stare attenti a tutto, se ti complichi la vita
non ti passa piu'

poi leggi/scrivi interi blocchi con fread(..) e fwrite(...)
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 18:04   #7
scarface7
Junior Member
 
Iscritto dal: Apr 2006
Messaggi: 15
grazie..comunque non uso fread e fwrite perchè non rientrano nel programma.ora provo un pò e ti faccio sapere..
scarface7 è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 18:08   #8
scarface7
Junior Member
 
Iscritto dal: Apr 2006
Messaggi: 15
niente ancora..neanche il tuo codice funziona..

vi copio il file txt da leggere:

8
!Opel!Astra!18000.00!
!Fiat!Punto!13500.00!
!Audi!A4!32000.00!
!Renault!Megane!22999.99!
!Fiat!Punto!13500.00!
!Opel!Corsa!12300.00!
!Alfa Romeo!147!29999.99!
!Citroen!C3!14850.00!
!Fiat!Multipla!15550.00!
scarface7 è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 18:21   #9
scarface7
Junior Member
 
Iscritto dal: Apr 2006
Messaggi: 15
codice e schermata a video

allora vi posto prima il codice della mia funzione e poi cosa mi compare a video:

CODICE:

int carica(FILE *f,automobile el[])

{
int i,k,n;
fscanf(f,"%d",&n);

for(i=0;!feof(f);i++){
fscanf(f,"!");
for(k=0;(el[i].marca[k]=fgetc(f))!='!';k++);
el[i].marca[k]='\0';
for(k=0;((el[i].modello[k]=fgetc(f))!='!')&&!feof(f);k++);
el[i].modello[k]='\0';
fscanf(f,"%f!\n",&(el[i].prezzo));

}

return i;

}

SCHERMATA A VIDEO:

digitare il nome del file da caricare: auto.txt
sono stati caricati 10 record dal file auto.txt
Premere un tasto per continuare . . .
visualizzazione dell'elenco a video:

!Opel!0.00
Astra!18000.00!0.00
Fiat!Punto!13500.00
Audi!A4!32000.00
Renault!Megane!22999.99
Fiat!Punto!13500.00
Opel!Corsa!12300.00
Alfa Romeo!147!29999.99
Citroen!C3!14850.00
Fiat!Multipla!15550.00
Premere un tasto per continuare . . .


potreste gentilmente correggere il mio errore..grazie
scarface7 è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2006, 20:11   #10
Qu@ker
Member
 
Iscritto dal: Apr 2004
Messaggi: 130
Giusto per darti un suggerimento:
Codice:
#include <stdio.h>

typedef struct _elem {
	char marca[16];
	char modello[16];
	float prezzo;
} elem;

int main()
{
	elem el[10];
	int i, j, dummy;
	FILE *in = fopen("auto.txt", "r");
	fscanf(in, "%d", &dummy);
	printf("Letto: %d\n", dummy);
	i = 0;
	while (fscanf(in, " !%[^!]!%[^!]!%f!",
			  el[i].marca, el[i].modello,
                          &el[i].prezzo) == 3)
		++i;
	fclose(in);
	printf("Caricati %d record\n\n", i);

	puts("   marca  |  modello |  prezzo  |");
	puts("---------------------------------");
	for (j = 0; j < i; ++j) {
		printf("%10s %10s\t%.2f\n", 
		       el[j].marca, el[j].modello,
                       el[j].prezzo);
	}

	return 0;
}
Codice:
goku@big:/tmp$ ./leggifile
Letto: 8
Caricati 9 record

   marca  |  modello |  prezzo  |
---------------------------------
      Opel      Astra   18000.00
      Fiat      Punto   13500.00
      Audi         A4   32000.00
   Renault     Megane   22999.99
      Fiat      Punto   13500.00
      Opel      Corsa   12300.00
Alfa Romeo        147   29999.99
   Citroen         C3   14850.00
      Fiat   Multipla   15550.00
goku@big:/tmp$
Qu@ker è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
Logitech G305 Lightspeed e G316 X 98: 8....
Qualcomm Snapdragon Reality Elite uffici...
Snapdragon START: arriva la piattaforma ...
Kioxia Exceria G3: il modella da 4 TB &e...
Gemini 3.5 Flash delude nei test Android...
DREAME X50 Ultra Complete a 749€ per il ...
Prezzi console handheld alle stelle: la ...
Toyota presenta il primo pickup elettric...
Prime Day anticipato, tutti gli smartpho...
Dyson V10 Konical: il primo aspirapolver...
FSR 4.1 su Radeon 6000, AMD spiega perch...
Hisense svela la gamma TV 2026: RGB Mini...
Narwal lancia gli sconti Prime Day 2026:...
SpaceX ha comprato Cursor: accordo da 60...
Commodore Callback 8020 è il tele...
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 - 2026, Jelsoft Enterprises Ltd.
Served by www3v