/* esimerkki 1 */ /* syöttö ja tulostus tiedostoihin */ /* syöttö ja tulostus funktiot yms. määrittelyt saadaan stdio.h * tiedostosta */ #include main() { /* tiedostojen tyyppi on FILE, niitä käsitellään pointtereiden * avulla */ FILE *myoutput, *myinput; char *str[100]; int i; /* tiedostot avataan fopen komennolla. ensin tulee tiedoston nimi, * sitten moodi, joka kertoo luetaanko, kirjoitetaanko, teksti vai * binaari tiedosto jne. */ /* tässä avataan tiedosto kirjoittamista varten -- moodi on silloin * "w" */ myoutput = fopen("testfile.txt", "w"); /* tekstitiedostoihin voi tulostaa käyttämällä fprintf komentoa. se * toimii ihan samalla tavalla kuin printf:kin, mutta saa lisäksi * argumentin, joka kertoo mihin tietovirtaan kirjoitetaan */ fprintf(myoutput, "Hello!\n%d\n", 12345); /* tiedostot suljetaan fclose funktiolla */ fclose(myoutput); /* tiedosto avataan lukemista varten "r" moodilla */ myinput = fopen("testfile.txt", "r"); /* huolellinen ohjelmoija tarkistaa aina, onko tiedoston avaaminen * onnistunut */ /* tiedosto (pointteri) on NULL jos avaaminen epäonnistui */ if (myinput == NULL) { /* perror funktiota voi käyttää virheilmoitusten tulostamiseen - * se lisää viestin perään virheen syyn automaattisesti */ perror("can't open 'testfile.txt'"); /* tässä ohjelma tulostaisi can't open 'testfile.txt': No such file or directory jos tiedostoa ei voitaisi avata */ /* keskeytetään pääfunktio return lauseella */ return (1); } /* tekstitiedostoja voi luke fscanf funktiolla, joka on kuin scanf, * mutta saa myös argumenttina tiedoston josta luetaan */ fscanf(myinput, "%s%d", str, &i); /* ^^^^^^^ |^^^^^^^^^^^^^^^ */ /* tied. | loput on tasan josta | samoin kuin luetaan | scanf-funktion | kanssa */ /* standardi syöttö ja tulostus ovat tietovirrat nimeltä stdin ja * stdout */ /* sama kuin printf: */ fprintf(stdout, "Read from file: %s %d\n", str, i); return (0); }