Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe
Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe
La flessibilità di configurazione è il punto di forza di questo 2-in-1, che ripropone in un form factor alternativo tutta la tipica qualità dei prodotti Lenovo della famiglia ThinkPad. Qualità costruttiva ai vertici, ottima dotazione hardware ma costo che si presenta molto elevato.
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Mentre Ubisoft vorrebbe chiedere agli utenti, all'occorrenza, di distruggere perfino le copie fisiche dei propri giochi, il movimento Stop Killing Games si sta battendo per preservare quella che l'Unione Europea ha già riconosciuto come una forma d'arte. Abbiamo avuto modo di parlare con Daniel Ondruska, portavoce dell'Iniziativa Europa volta a preservare la conservazione dei videogiochi
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Abbiamo provato il nuovo Galaxy S25 Edge, uno smartphone unico per il suo spessore di soli 5,8 mm e un peso super piuma. Parliamo di un device che ha pro e contro, ma sicuramente si differenzia dalla massa per la sua portabilità, ma non senza qualche compromesso. Ecco la nostra prova completa.
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
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da scarface7
chi altro saprebbe darmi un aiuto..per piacere
Potresti magari postare la dichiarazione della struttura automobile??
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
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


Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il c...
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart Intervista a Stop Killing Games: distruggere vid...
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione Samsung Galaxy S25 Edge: il top di gamma ultraso...
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto HP Elitebook Ultra G1i 14 è il notebook c...
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Meta avrebbe scaricato illegalmente migl...
QNAP annuncia la funzionalità di ...
Fino a 96 core per chip: la nuova CPU se...
Robot che crescono mangiando i loro simi...
Star Wars Outlaws 2 cancellato: per Ubis...
F1 senza freni: il film supera i 500 mil...
Una supersportiva elettrica da 429 CV a ...
Denodo DeepQuery: ricerche complesse in ...
Pluribus è la nuova ambiziosa ser...
IA come persone: avranno una personalit&...
Scoppia la bufera NSFW: la mano di Colle...
Philips porta OneBlade su Fortnite: arri...
Il consumo dei data center AI esplode: r...
Dimenticate tutto quello che avete visto...
Prodotti illegali su Temu: l'UE avvia pr...
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:13.


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