/* numeroi.cpp */ /* Ohjelmalla tulostetaan tiedosto numeroituna /vl-94, C++ versio-2000 */ /* Jos ohjelmaa kutsutaan numeroi, numeroi -?, numeroi /? tai numeroi ? */ /* tulostetaan avustus */ #include #include #include #include #include using namespace std; /****************************************************************************/ int ohjeet(void) { cout << "numeroi 1.0/vl-94\n"; cout << "-----------------\n"; cout << "\n"; cout << "Ohjelmalla tulostetaan tiedosto siten,\n"; cout << "ett„ sen rivit numeroidaan ja katkaistaan\n"; cout << "ylipitk„t osat pois\n"; cout << "\n"; cout << "Kutsu: numeroi tiedosto [rivin_pituus]\n"; cout << "Esimerkiksi: numeroi koe.txt 40\n"; return 0; } /****************************************************************************/ void tulosta_ja_numeroi(istream &f,unsigned int maxpit) /* Tulostetaan tiedosto siten, ett„ kunkin rivin alkun tulee rivinumero ** ja ylipitk„t rivit katkaistaan. Varataan ty”tila dynaamisesti. */ { string jono; int rivinro = 1; char oldfill = cout.fill('0'); while ( getline(f,jono) ) { if ( jono.length() > maxpit ) jono.erase(maxpit); // katkaisu cout << "/* " << setw(2) << rivinro << " */ " << jono << endl; rivinro++; } cout.fill(oldfill); } /****************************************************************************/ int main(int argc, char *argv[]) { int maxpit = 70; const char *nimi = argv[1]; if ( argc == 1 || argc > 1 && strchr(argv[1],'?') ) return ohjeet(); if ( argc > 2 ) sscanf(argv[2],"%d",&maxpit); if ( maxpit <= 0 ) return 1; ifstream f(nimi); if ( !f ) { cout << "Tiedosto " << nimi << " ei aukea\n"; return 1; } tulosta_ja_numeroi(f,maxpit); return 0; }