// tuot_pal.cpp - esimerkki tiedoston lukemisesta // Projektiin +ALI\mjonot.c #include #include #include #include #include using namespace std; #include "mjonotpp.h" struct tTuote { string nimike; double hinta; int kpl; }; void alusta(tTuote &tuote) { tuote.nimike = ""; tuote.hinta = 0.0; tuote.kpl = 0; } int lue(istream &is,tTuote &tuote) { char jono[50]; alusta(tuote); is.getline(N_S(jono),'|'); tuote.nimike = poista_tyhjat(jono); is.getline(N_S(jono),'|'); if ( sscanf(jono,"%lf",&tuote.hinta) < 1 ) return 1; is.getline(N_S(jono),'\n'); if ( sscanf(jono,"%d",&tuote.kpl) < 1 ) return 1; return 0; } int rivi_tuotteeksi(char *rivi, tTuote &tuote) { istrstream sstr(rivi); return lue(sstr,tuote); } int tulosta_tuotteet(void) { tTuote tuote; char rivi[80]; ifstream fi("TUOTTEET.DAT"); if ( !fi ) return 1; cout << "\n\n\n"; cout << "-------------------------------------------\n"; while ( 1 ) { if ( !fi.getline(rivi,sizeof(rivi))) break; if ( rivi_tuotteeksi(rivi,tuote) ) continue; printf("%-20s %7.0lf %4d\n",tuote.nimike.c_str(),tuote.hinta,tuote.kpl); } cout << "-------------------------------------------\n"; cout << "\n\n\n"; return 0; } int main(void) { if ( tulosta_tuotteet() ) { cout << "Tuotteita ei saada luetuksi!\n"; return 1; } return 0; }