Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 INFORMATICA - Primo Anno
 Linguaggi di programmazione
 Cosa c'e che nn va!!!

Nota: Devi essere registrato per poter inserire un messaggio.
Per registrarti, clicca qui. La Registrazione è semplice e gratuita!

Larghezza finestra:
Nome Utente:
Password:
Modo:
Formato: GrassettoCorsivoSottolineatoBarrato Aggiungi Spoiler Allinea a  SinistraCentraAllinea a Destra Riga Orizzontale Inserisci linkInserisci EmailInserisci FlashInserisci Immagine Inserisci CodiceInserisci CitazioneInserisci Lista Inserisci Faccine
   
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è OFF
* Il Codice Forum è ON

Smilies
Approvazione [^] Arrabbiato [:(!] Bacio [:X] Bevuta [:273]
Caldo [8D] Compiaciuto [8)]    
compleanno [:269]
Davvero Felice [:D] Diavoletto [}:)] Disapprovazione [V] Domanda [?]
Felice [:)] Fumata [:29] Goloso [:P] Imbarazzato [:I]
Infelice [:(] Morte improvvisa da [:62]
Morto [xx(] Occhio Nero [B)] Occhiolino [;)] Palla 8 [8]
pc [:205]    
Riproduzione [:76]
Scioccato [:O]      

   Allega file
  Clicca qui per inserire la tua firma nel messaggio.
Clicca qui per sottoscrivere questa Discussione.
    

V I S U A L I Z Z A    D I S C U S S I O N E
mauroste Inserito il - 07/07/2004 : 16:59:47
Ragazzi provate questo programma e ditemi cosa c'e che nn va


/*Lettura di dati da un file sequenziale e stampa degli stessi*/


#include <stdio.h>
#include <stdlib.h>

main()


{ int nroconto;

char nome[30];

float saldo;

FILE *cfPtr;


if((cfPtr=fopen("clienti.dat","r"))==NULL)

/*se il file non e' aperto in lettura*/

printf("Il file potrebbe non essere aperto in lettura.\n\n");

else {

printf("%-10s%-13s%s\n","NroConto","Nome","Saldo");

fscanf(cfPtr,"d%s%f",&nroconto,nome,&saldo);
/*leggo un rcord dal file puntato da cfPtr*/

while(!feof(cfPtr)) /*finche nn termina il file,cioe finche' ci sono ancora
record da leggere ,stampo quello che ho letto e continuo a leggere*/
{ printf("%-10d%-13d%7.2f\n",nroconto,nome,saldo);
fscanf(cfPtr,"d%s%f",&nroconto,nome,&saldo);


}

fclose(cfPtr);

/*quando ho terminato la lettura del file chiudo il file attrverso il puntatore
ad esso*/

}

system("PAUSE");
return 0;
}
3   U L T I M E    R I S P O S T E    (in alto le più recenti)
badpenguin Inserito il - 07/07/2004 : 20:17:26
Nel primo programma il problema è in questo gruppo di istruzioni:

1-fscanf(cfPtr,"d%s%f",&nroconto,nome,&saldo);
/*leggo un rcord dal file puntato da cfPtr*/

while(!feof(cfPtr)) /*finche nn termina il file,cioe finche' ci sono ancora
record da leggere ,stampo quello che ho letto e continuo a leggere*/
{2- printf("%-10d%-13d%7.2f\n",nroconto,nome,saldo);
3-fscanf(cfPtr,"d%s%f",&nroconto,nome,&saldo);

La 1- dovrebbe essere così :fscanf(cfPtr,"%d%s%f",&nroconto,nome,&saldo);
hai dimenticato di antecedere % ;)

nella 2- dovresti scrivere printf("%-10d%-13s%7.2f\n",nroconto,nome,saldo);
il secondo parametro è un tipo stringa e non un integer.

nella 3- idem come 1-



Nel secondo programma, nella parte in cui scrivi su file i dati che inserisci da stdin dovresti scrivere
fprintf(cfPtr,"%d\t%s\t%7.2f\n",nroconto,nome,saldo);

Il "\t" viene usato come carattere di tabulazione per separare i vari campi (nrconto, nome, saldo)

Ciao.
mauroste Inserito il - 07/07/2004 : 18:21:40
Date un occhiata anche a questo,vi prego!!!!




/*Programma che consente ad un amministratore del credito di ottenere:

1:l'elenco dei clienti con saldo a zero(ovvero che nn hanno ricevuto nessun

prestito)
2:l'elenco dei clienti con saldo a credito(ovvero quelli a cui l'azienda deve
del denaro) (=ammontare negativo)


3:l'elenco dei clienti con saldo a debito(ovvero quelli che hanno ricevuto prestiti
dalll'azienda)=(ammontare positivo)*/

#include <stdio.h>
#include <stdlib.h>

main()
{ int richiesta,nroconto;

char nome[30];

float saldo;

FILE *cfPtr;

/*puntatore al file che si intende leggere*/

if((cfPtr=fopen("clienti.dat","w"))==NULL)
/*se il file non e' stato aperto in scrittura*/

printf("Il file potrebbe non essere stato aperto in scrittura\n\n");

else{


printf("\n\nInserisci nroconto,nome e saldo.\n\n ");

printf("\n\nDigita EOF per terminare l'inserimento.\n\n");

printf("? ");

scanf("%d%s%f",&nroconto,nome,&saldo);




while(!feof(stdin))/*fino a che nn si incontra il terminatore di eof*/
{ fprintf(cfPtr,"%d%s%.2f\n",nroconto,nome,saldo);
/*scrivi i dati inseriti nel file clienti.dat,puntato da cfPrt*/

printf("? ");

scanf("%d%s%f",&nroconto,nome,&saldo);

}


fclose(cfPtr);


}

if((cfPtr=fopen("clienti.dat","r"))==NULL)

/*Se il file non e' stato aperto in lettura*/

printf("Il file non potrebbe essere stato aperto in lettura.\n");


else { printf("Inserisci la richiesta\n");

printf("1 -Elenca i clienti con saldo a zero\n");


printf("2 -Elenca i clienti con saldo a credito\n");

printf("3 -Elenca i clienti con saldo a debito\n");

printf("Termina l'esecuzione del programma\n?");

scanf("%d",&richiesta);


while(richiesta != 4) {


fscanf(cfPtr,"%d%s%f",&nroconto,nome,&saldo);

/*leggi dal file le info che ti servono cioe nroconto,nome e saldo*/

switch(richiesta) {


case 1:

printf("\n Clienti con saldo a zero :\n") ;

while(!feof(cfPtr)) {

if(saldo==0)

printf("%-10d%-13s%7.2f\n",nroconto,nome,saldo);
/*scrive le info lette e ne legge altre*/

fscanf(cfPtr,"%d%s%f",&nroconto,nome,&saldo);

}



break;



case 2:

printf("\n Clienti con saldo a credito :\n") ;

while(!feof(cfPtr)) {

if(saldo<0)

printf("%-10d%-13s%7.2f\n",nroconto,nome,saldo);
/*scrive le info lette e ne legge altre*/

fscanf(cfPtr,"%d%s%f",&nroconto,nome,&saldo);

}



break;



case 3:

printf("\n Clienti con saldo a debito :\n") ;

while(!feof(cfPtr)) {

if(saldo>0)

printf("%-10d%-13s%7.2f\n",nroconto,nome,saldo);
/*scrive le info lette e ne legge altre*/

fscanf(cfPtr,"d%s%f",&nroconto,nome,&saldo);

}



break;

}

rewind(cfPtr);

/*riposizioniamo il puntatore di posizione del file all'inizio del file per una
revisione*/

printf("\n");

scanf("%d",&richiesta); /*chiede di nuovo la lista che si vuole leggere*/



}

printf("Fine del programma.\n");

/*Se abbiamo digitato 4*/

fclose(cfPtr);/*chiudiamo il file aperto in lettura*/

}
system("PAUSE");
return 0;
}
novantuno Inserito il - 07/07/2004 : 17:14:00
A prima vista sembra a posto !
Penso che potresti usare fread ed fwrite al posto di
fscanf ed fwrite, visto che hai il campo numero conto !

Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,06 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000