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!!!
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

mauroste
Nuovo Utente



Inserito il - 07/07/2004 : 16:59:47  Mostra Profilo  Visita l'Homepage di mauroste Invia a mauroste un Messaggio Privato  Rispondi Quotando
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;
}

novantuno
Ero-sannin

Jiraya


Regione: Puglia
Prov.: Bari
Città: Modugno


Inserito il - 07/07/2004 : 17:14:00  Mostra Profilo  Visita l'Homepage di novantuno  Invia a novantuno un messaggio ICQ  Clicca per vedere l'indirizzo MSN di novantuno Invia a novantuno un Messaggio Privato  Rispondi Quotando
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 !
Torna all'inizio della Pagina

mauroste
Nuovo Utente



Inserito il - 07/07/2004 : 18:21:40  Mostra Profilo  Visita l'Homepage di mauroste Invia a mauroste un Messaggio Privato  Rispondi Quotando
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;
}
Torna all'inizio della Pagina

badpenguin
Nuovo Utente



Regione: Puglia
Prov.: Bari


Inserito il - 07/07/2004 : 20:17:26  Mostra Profilo  Visita l'Homepage di badpenguin Invia a badpenguin un Messaggio Privato  Rispondi Quotando
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.

Software is like sex: it's better when it's free. (Linus Torvalds)

Modificato da - badpenguin in data
Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione Successiva  
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,23 secondi.

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