#include #define N 2000 main() { /* luodaan tiedosto-osoitin f */ FILE* f; double values[N]={0.0}; int i=0,n; /* asetetaan f osoittamaan levyllä olevaan tiedostoon data.txt (sen tiedoston alkuun), jonka nyt oletetaan olevan samassa hakemistossa kuin tämä lähdekooditiedosto. jos näin ei ole, täytyy kirjoittaa koko hakemistopolku, esim. "c://documents and settings//oma nimi//työpöytä//data.txt" */ /* toinen argumentti kertoo, miten tiedostoa käsitellään. "r" tarkoittaa lukemista, "w" kirjoittamista, ... (ks. pruju) */ f = fopen("data_h09esim1.txt","r"); /* funktio feof(FILE* f) palauttaa 1, jos siinä tiedoston kohdassa, johon f osoittaa, oleva merkki on tiedoston loppumerkki, ts. jos tiedostossa ei ole enempää dataa */ /* fscanf toimii kuten scanf, mutta ottaa 1. argumentikseen osoittimen tietovirtaan, ts. tiedosto-osoittimen, josta dataa luetaan. fscanf etenee tiedostossa yhden luvun verran. jos tiedosto olisi avattu binäärimuodossa, tiedosto-osoitin siirtyisi sen verran tavuja eteenpäin, mitä yksi double- tyyppinen muuttuja vie */ while( !feof(f) ) { fscanf(f,"%lf",&values[i]); i++; } /* tiedosto-osoitinta ei enää tarvita, joten tietovirran voi sulkea */ fclose(f); /* yllä oleva silmukka lukee lukuja yhden enemmän kuin tiedostoon on kirjoitettu (se lukee viimeiseksi "tyhjän" merkin, joka tallentuu values-taulukkoon nollana */ n=i-1; for(i=0;i