w10a przyklady operacji plikowych (2), WAT, semestr I

Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.
PRZYKŁADY OPERACJI PLIKOWYCH
z wykorzystaniem biblioteki <stdio.h>
Pliki TEKSTOWE zawieraj
ą
ce ci
ą
gi liczb:
sumowanie dwóch liczb zapisanych w pliku tekstowym
(
fopen
,
fscanf
,
fprintf
,
fclose
)
-
TXT- 2:
Program TXT-1 rozbudowany o kontrolę błędów operacji plikowych
(

ę
dy
:
otwarcia
pliku,
odczytu
i
zapisu
danych liczbowych )
TXT- 3:
Sumator kolejnych par liczb pobieranych z pliku tekstowego
( iteracyjne przetwarzanie ciągu liczb pętlą
while( fscanf(...)==2 ){...}
)
TXT- 4:
Iteracyjne przetwarzanie ciągu liczb wczytywanego z pliku (
fscanf
)
( zliczanie ilości liczb, sumy liczb, wartości średniej )
TXT- 5:
Plikowe operacje dla tablicy liczb
(
fprintf
,
fscanf
, zapisywanie i odczytywanie elementów tablicy)
TXT- 6:
Filtrowanie – kopiowanie liczb wybranych w/g zadanego kryterium
(
fscanf
,
fprintf
)
TXT- 7:
Usunięcie wybranych liczb ze środka pliku tekstowego
( poprzez kopiowanie pliku z pominięciem usuwanych wartości )
Pliki BINARNE zawieraj
ą
ce ci
ą
gi liczb:
BIN-1:
Zapis ciągu liczb z klawiatury do pliku binarnego (
fwrite
)
BIN-2:
Odczyt i wyświetlenie całej zawartości pliku binarnego (
fread
)
BIN-3:
Odczyt wskazanej liczby ze środka pliku binarnego (
fseek
,
fread
)
BIN-4:
Dopisanie trzech liczb (2,4,6) na końcu pliku binarnego (
a -
append
)
BIN-5:
Zamiana-nadpisanie wartości liczby w pliku binarnym
(
fseek
,
ftell
,
fwrite
)
BIN-6:
Filtrowanie – kopiowanie liczb w/g zadanego kryterium
za pomocą pętli:
while( fread(...)==1 )
if( ... )
fwrite(...);
M. Piasecki: METODY PROGRAMOWANIA (2)
-
1
-
(W3) Przykłady operacji plikowych
TXT- 1:
Kalkulator
Przykład TXT-1:
Kalkulator (wersja bez kontroli błedów)
Plik wej
ś
ciowy:
dane.txt
Plik wyj
ś
ciowy:
wynik.txt
20.5
2.5
23.00
//
Program oblicza sum
ę
dwóch liczb rzeczywistych typu double.
//
Sumowane liczby s
ą
pobierane z istniej
ą
cego pliku dyskowego ”dane.txt”
//
Wynik sumowania jest zapisywany nowo tworzonego pliku ”wynik.txt”
#include <stdio.h>
void main()
double a,b,suma;
//
odczyt dwóch liczb <double> z pliku tekstowego do zmiennych <a> i <b>
FILE
* plik;
plik=
fopen
("dane.txt",
"rt"
);
fscanf
(plik,"%lf %lf",&
a
,&
b
);
fclose
(plik);
//
wy
ś
wietlenie wyniku sumowania na ekranie konsoli (zapis do pliku stdout)
suma = a + b;
printf("Wynik sumowania: %.2f + %.2f = %.2f\n\n",a,b,suma);
//
zapis wyniku sumowania, tzn. zmiennej <suma>, do pliku tekstowego
plik=
fopen
("wynik.txt",
"wt"
);
fprintf
(plik,"%.2f",
suma
);
fclose
(plik);
printf("Wynik zostal zapisany w pliku \"wynik.txt\"");
}
Wykorzystywane funkcje:
fopen
-
otwarcie pliku,
parametry
"rt"
oznaczają „read” „text”
parametry
"wt"
oznaczają „write” „text”
fscanf
-
odczyt danych z pliku tekstowego,
parametr
"%lf"
oznacza odczyt liczby do zmiennej
double
fprintf
-
zapis danych do pliku tekstowego,
parametr
"%f"
oznacza zapis liczby
float
lub
double
parametr
".2"
oznacza dokładność 2 miejsc po przecinku
fclose
-
zamknięcie pliku
M. Piasecki: METODY PROGRAMOWANIA (2)
-
2
-
(W3) Przykłady operacji plikowych
{
getchar();
Przykład TXT-2:
Kalkulator (wersja z kontrolowaniem bł
ę
dów plikowych)
#include <stdio.h>
void main()
{ double
a
,
b
,
suma
;
FILE*
plik
=
fopen
("dane.txt", "rt");
7
if(
plik==NULL
)
7
{ printf("Blad otwarcia pliku danych!");
getchar();
return;
}
else
{ int ilosc_odczytanych;
ilosc_odczytanych = fscanf
(plik,"%lf %lf",&
a
,&
b
);
7
fclose(plik);
if(
ilosc_odczytanych != 2
)
7
{ printf("Blad wczytywania danych!");
getchar();
return;
}
else
{ suma = a + b;
printf("Wynik sumowania: %.2f + %.2f = %.2f\n\n",a,b,suma);
plik
=
fopen
("wynik.txt","wt");
7
if(
plik==NULL
)
7
{ printf("Blad otwarcia pliku wyników!");
getchar();
return;
}
else
{ int rezultat_zapisu;
rezultat_zapisu = fprintf
(plik,"%.2f",
suma
);
7
fclose(plik);
if(
rezultat_zapisu==EOF
)
7
{ printf("Blad zapisywania wyniku!");
getchar();
return;
}
else
{ printf("Wynik zostal zapisany w pliku \"wynik.txt\"");
getchar();
return;
}
}
}
}
}
M. Piasecki: METODY PROGRAMOWANIA (2)
-
3
-
(W3) Przykłady operacji plikowych
 Przykład TXT-3:
Sumator par liczb pobieranych z pliku tekstowego
Plik wej
ś
ciowy:
dane.txt
Plik wyj
ś
ciowy:
sumy.txt
1 1
2 5
5 -4
-500 -50
2
7
1
-550
//
Program oblicza sumy kolejnych par liczb całkowitych typu
int
.
//
Sumowane liczby s
ą
pobierane z istniej
ą
cego pliku dyskowego ”dane.txt”
//
Wyniki sumowania s
ą
zapisywane w kolejnych wierszach nowego pliku ”sumy.txt”
#include <stdio.h>
void main()
{
int
a,b,suma;
FILE* plik_danych, *plik_sum
;
//
otwarcie obu plików: odczytywanego ”dane.txt” i zapisywanego”sumy.txt”
plik_danych
=
fopen
("dane.txt", "rt");
plik_sum
=
fopen
("sumy.txt", "wt");
//
sprawdzenie poprawno
ś
ci otwarcia plików
if(
plik_danych==NULL
||
plik_sum==NULL
)
{
printf("Blad otwarcia plikow!");
getchar();
else
{
//
iteracyjne przetwarzanie kolejnych par poprawnie odczytanych liczb
while
(
fscanf
(plik_danych,"%d%d",&
a
,&
b
)
==2
)
{
suma = a + b;
fprintf
(
plik_sum
,"%d\n",
suma
);
fprintf(stdout,"%d\n",suma);
fprintf(stdout,"Koniec programu",suma);
getchar();
}
fclose
(plik_danych);
fclose
(plik_sum);
}
M. Piasecki: METODY PROGRAMOWANIA (2)
-
4
-
(W3) Przykłady operacji plikowych
}
}
Przykład TXT-4:
Iteracyjne przetwarzanie ci
ą
gu liczb z pliku tekstowego
Plik wej
ś
ciowy:
dane.txt
Rezultat:
wydruk na ekranie
7
-2
1.5
5
Ilosc wczytanych liczb = 4
Suma wczytanych liczb = 11.500
Wartosc srednia wynosi = 2.875
//
Program oblicza: ilo
ść
, sum
ę
oraz warto
ść
ś
redni
ą
kolejnych liczb typu
float
.
//
odczytywanych p
ę
tl
ą
while( fscanf(...)==1 ) {...}
//
z pliku tekstowego ”dane.txt”
#include <stdio.h>
void main()
{ FILE* plik;
//
otwarcie tekstowego pliku danych do odczytu
plik
=
fopen
("dane.txt",
"rt"
);
if( plik==NULL)
{ printf("Blad otwarcia pliku danych!");
getchar();
}
else
{ float liczba,
suma=0
;
int
licznik=0
;
//
p
ę
tla iteracyjnego odczytywania i przetwarzania kolejnych liczb
float
while
(
fscanf
(plik,"%f",&
liczba
)
==1
)
{
licznik++
;
suma += liczba
;
printf("%d odczytana liczba = %7.2f\n",licznik,liczba);
fclose
(plik);
//
wy
ś
wietlenie wyniku przetwarzania (ilo
ś
ci, sumy,
ś
redniej) na ekranie
if(
licznik==0
)
printf("Nie wczytano zadnej liczby. Nie mozna policzyc sredniej");
else
{ float
srednia=suma/licznik
;
printf("\nIlosc wczytanych liczb = %d \n", licznik);
printf("Suma wczytanych liczb = %.3f\n", suma);
printf("Wartosc srednia wynosi = %.3f\n", srednia);
}
getchar();
}
M. Piasecki: METODY PROGRAMOWANIA (2)
-
5
-
(W3) Przykłady operacji plikowych
}
}
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • alter.htw.pl
  • Powered by WordPress, © Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.