lab 02


Metodyki i Techniki
Metodyki i Techniki
Programowania 2
Programowania 2
zajęcia nr 2
zajęcia nr 2
Elektronika i Telekomunikacja, semestr III
Elektronika i Telekomunikacja, semestr III
rok akademicki 2009/2010
rok akademicki 2009/2010
mgr inż. Paweł Myszkowski
mgr inż. Paweł Myszkowski
Plan dzisiejszych zajęć
Plan dzisiejszych zajęć
1. Operacje na plikach - wprowadzenie
1. Operacje na plikach - wprowadzenie
2. Zapis i odczyt dla plików tekstowych
2. Zapis i odczyt dla plików tekstowych
3. Przykłady odwołań do plików tekstowych
3. Przykłady odwołań do plików tekstowych
4. Zadania do zrobienia
4. Zadania do zrobienia
1
1. Operacje na plikach - wprowadzenie
1. Operacje na plikach - wprowadzenie
Plik:
Plik:
- z punktu widzenia użytkownika jest to zbiór
- z punktu widzenia użytkownika jest to zbiór
danych na dysku,
danych na dysku,
- z punktu widzenia kompilatora jest to logiczna
- z punktu widzenia kompilatora jest to logiczna
interpretacja zbioru danych,
interpretacja zbioru danych,
- w języku C plik niekoniecznie musi oznaczać zbiór
- w języku C plik niekoniecznie musi oznaczać zbiór
na dysku (może być skojarzony z klawiaturą).
na dysku (może być skojarzony z klawiaturą).
1. Operacje na plikach - wprowadzenie
1. Operacje na plikach - wprowadzenie
Krok 1  skojarzenie pliku ze zbiorem
Krok 1  skojarzenie pliku ze zbiorem
danych, czyli otwarcie pliku.
danych, czyli otwarcie pliku.
FILE *zmienna; //wskaznik pliku
FILE *zmienna; //wskaznik pliku
Wskaznik wskazuje na pewną strukturę zadeklarowaną
Wskaznik wskazuje na pewną strukturę zadeklarowaną
w pliku . Zawiera ona informacje o pliku,
w pliku . Zawiera ona informacje o pliku,
m.in. położenie bufora, rodzaj dostępu do pliku,
m.in. położenie bufora, rodzaj dostępu do pliku,
sygnały o wystąpieniu błędów.
sygnały o wystąpieniu błędów.
2
1. Operacje na plikach - wprowadzenie
1. Operacje na plikach - wprowadzenie
Do otwarcia pliku służy funkcja fopen().
Do otwarcia pliku służy funkcja fopen().
FILE *zmienna = fopen("nazwa_pliku","tryb");
FILE *zmienna = fopen("nazwa_pliku","tryb");
nazwa_pliku  nazwa zbioru na dysku, może być
nazwa_pliku  nazwa zbioru na dysku, może być
razem ze ścieżką dostępu
razem ze ścieżką dostępu
tryb  określa sposób dostępu do pliku
tryb  określa sposób dostępu do pliku
1. Operacje na plikach - wprowadzenie
1. Operacje na plikach - wprowadzenie
Tryby dostępu do pliku:
Tryby dostępu do pliku:
"r"  czytanie
"r"  czytanie
"w"  zapisywanie
"w"  zapisywanie
jeśli plik nie istnieje - zostanie utworzony
jeśli plik nie istnieje - zostanie utworzony
jeśli plik istnieje  zostanie nadpisany
jeśli plik istnieje  zostanie nadpisany
"a"  dopisywanie
"a"  dopisywanie
na końcu istniejącego lub na początku nowego
na końcu istniejącego lub na początku nowego
"r+"  czytanie z możliwością zapisywania
"r+"  czytanie z możliwością zapisywania
"w+"  zapisywanie z możliwością czytania
"w+"  zapisywanie z możliwością czytania
"a+"  dopisywanie z możliwością czytania
"a+"  dopisywanie z możliwością czytania
3
1. Operacje na plikach - wprowadzenie
1. Operacje na plikach - wprowadzenie
Rodzaje plików:
Rodzaje plików:
Pliki tekstowe  podzielone na wiersze (linie), z
Pliki tekstowe  podzielone na wiersze (linie), z
których każdy kończy się znakiem końca wiersza.
których każdy kończy się znakiem końca wiersza.
Cały plik kończy się znakiem końca pliku (EOF).
Cały plik kończy się znakiem końca pliku (EOF).
Pliki binarne  nie mają określonej struktury
Pliki binarne  nie mają określonej struktury
Aby otworzyć plik jako binarny, w łańcuchu znaków
Aby otworzyć plik jako binarny, w łańcuchu znaków
określającym tryb dostępu na końcu dodajemy
określającym tryb dostępu na końcu dodajemy
literkę "b", np. "rb", "w+b". Bez tego plik jest
literkę "b", np. "rb", "w+b". Bez tego plik jest
traktowany jako tekstowy.
traktowany jako tekstowy.
1. Operacje na plikach - wprowadzenie
1. Operacje na plikach - wprowadzenie
Zamykanie pliku
Zamykanie pliku
Po zakończeniu pracy z plikiem należy go
Po zakończeniu pracy z plikiem należy go
zamknąć. Służy do tego funkcja fclose.
zamknąć. Służy do tego funkcja fclose.
int fclose(FILE *zmienna);
int fclose(FILE *zmienna);
4
1. Operacje na plikach - wprowadzenie
1. Operacje na plikach - wprowadzenie
Schemat przetwarzania pliku
Schemat przetwarzania pliku
FILE *plik=fopen("D:\\student\\plik.txt","r"); //otwarcie
FILE *plik=fopen("D:\\student\\plik.txt","r"); //otwarcie
if (plik==NULL) //kontrola błędów
if (plik==NULL) //kontrola błędów
{
{
printf("Blad otwarcia pliku\n");
printf("Blad otwarcia pliku\n");
getch(); exit(-1);
getch(); exit(-1);
}
}
/* przetwarzanie pliku  zapis lub odczyt */
/* przetwarzanie pliku  zapis lub odczyt */
fclose(plik) //zamknięcie
fclose(plik) //zamknięcie
2. Zapis i odczyt dla plików tekstowych
2. Zapis i odczyt dla plików tekstowych
Czytanie i zapisywanie pojedynczych znaków:
Czytanie i zapisywanie pojedynczych znaków:
fgetc  odczytuje z pliku jeden znak
fgetc  odczytuje z pliku jeden znak
nagłówek: int fgetc(FILE *plik);
nagłówek: int fgetc(FILE *plik);
fputc  zapisuje do pliku jeden znak
fputc  zapisuje do pliku jeden znak
nagłówek: int fputc(char znak, FILE *plik);
nagłówek: int fputc(char znak, FILE *plik);
Przykład:
Przykład:
FILE *plik;
FILE *plik;
plik = fopen("jakis_plik.txt","r+t");
plik = fopen("jakis_plik.txt","r+t");
char znak = fgetc(plik);
char znak = fgetc(plik);
fputc(znak,plik);
fputc(znak,plik);
5
2. Zapis i odczyt dla plików tekstowych
2. Zapis i odczyt dla plików tekstowych
Czytanie i zapisywanie łańcuchów znaków:
Czytanie i zapisywanie łańcuchów znaków:
fgets  czyta z pliku łańcuch znaków o podanej długości lub do
fgets  czyta z pliku łańcuch znaków o podanej długości lub do
końca wiersza,
końca wiersza,
nagłówek: char* fgets(char* linia, int dl, FILE* plik);
nagłówek: char* fgets(char* linia, int dl, FILE* plik);
fputs  zapisuje łańcuch znaków do pliku,
fputs  zapisuje łańcuch znaków do pliku,
nagłówek: int fputs(char* linia, FILE *plik);
nagłówek: int fputs(char* linia, FILE *plik);
Przykład:
Przykład:
FILE *plik;
FILE *plik;
char *linia;
char *linia;
plik = fopen("jakis_plik.txt","rt");
plik = fopen("jakis_plik.txt","rt");
fgets (linia,255,plik);
fgets (linia,255,plik);
printf("Linia z pliku: %s",linia);
printf("Linia z pliku: %s",linia);
2. Zapis i odczyt dla plików tekstowych
2. Zapis i odczyt dla plików tekstowych
Odczyt i zapis sformatowany:
Odczyt i zapis sformatowany:
fscanf  działa tak jak scanf, ale ma dodatkowy parametr,
fscanf  działa tak jak scanf, ale ma dodatkowy parametr,
nagłówek: int fscanf(FILE* plik, const char* format,& );
nagłówek: int fscanf(FILE* plik, const char* format,& );
fprintf  działa tak jak printf, ale ma dodatkowy parametr,
fprintf  działa tak jak printf, ale ma dodatkowy parametr,
nagłówek: int fprintf(FILE* plik, const char* format,& );
nagłówek: int fprintf(FILE* plik, const char* format,& );
Przykład:
Przykład:
FILE *plik;
FILE *plik;
int liczba=21;
int liczba=21;
plik = fopen("jakis_plik.txt","wt");
plik = fopen("jakis_plik.txt","wt");
fprintf(plik,"Liczba zapisana do pliku to %d\n",liczba);
fprintf(plik,"Liczba zapisana do pliku to %d\n",liczba);
fclose(plik);
fclose(plik);
6
3. Przykłady odwołań do plików tekst.
3. Przykłady odwołań do plików tekst.
Czytanie z pliku znak po znaku:
Czytanie z pliku znak po znaku:
#include
#include
#include
#include
int main()
int main()
{
{
char znak;
char znak;
FILE* plik = fopen("main.c","rt");
FILE* plik = fopen("main.c","rt");
while((znak=fgetc(plik))!=EOF)
while((znak=fgetc(plik))!=EOF)
printf("%c",znak);
printf("%c",znak);
fclose(plik);
fclose(plik);
getch();
getch();
}
}
3. Przykłady odwołań do plików tekst.
3. Przykłady odwołań do plików tekst.
Czytanie z pliku linia po linii:
Czytanie z pliku linia po linii:
#include
#include
#include
#include
int main()
int main()
{
{
char linia[255];
char linia[255];
FILE* plik = fopen("main.c","rt");
FILE* plik = fopen("main.c","rt");
while((fgets(linia,255,plik)!=NULL)
while((fgets(linia,255,plik)!=NULL)
printf("%s",linia);
printf("%s",linia);
fclose(plik);
fclose(plik);
getch();
getch();
}
}
7


Wyszukiwarka

Podobne podstrony:
Lab cpp
lab 2
T2 Skrypt do lab OU Rozdział 6 Wiercenie 3
IE RS lab 9 overview
lab pkm 3
lab chemia korozja
lab tsp 3
Lab
Konsp Lab TK ZiIP sem3d 1st
lab Projektowanie filtrow
Lab transopt instr
lab
lab
siso semVI lab

więcej podobnych podstron