Ćwiczenie 2 Zadania do wykonania Operacje na plikach
Transkrypt
Ćwiczenie 2 Zadania do wykonania Operacje na plikach
Metody i Języki Programowania ćwiczenie 2 Ćwiczenie 2 Celem ćwiczenia jest poznanie funkcji dostępu do plików. Zadania do wykonania 1. Napisz program, który wczyta z klawiatury tekst i zapisze go w pliku tekstowym. 2. Napisz program, który przekopiuje zawartość jednego pliku tekstowego do drugiego, znak po znaku. W przypadku napotkania litery naleŜy ją zdublować, w przypadku liczby potroić, inne znaki typu spacja, myślnik, przecinek przekopiować pojedynczo. Nazwy plików mają być przekazane jako argumenty wywołania programu. 3. Napisz program, który umoŜliwi wczytanie plików Iris.tea, bupa.txt, pima.txt oraz policzy i wyświetli średnie wartości dla wszystkich kolumn w pliku. Ilość kolumn i wierszy jest zmienna i podawana jest w pierwszym wierszu pliku. Operacje na plikach fopen FILE* fopen(const char* nazwa, const char* tryb); Otwarcie pliku ”nazwa” tryb : r : odczyt istniejącego pliku w : utworzenie pliku do zapisu a : zapis na końcu istniejącego pliku r+ : zapis lub odczyt istniejącego pliku w+ : utworzenie pliku do zapisu i odczytu a+ : zapis lub odczyt na końcu istniejącego pliku dodatkowo t : plik tekstowy b : plik binarny fclose int fclose (FILE Zamknięcie pliku. *plik ) ; fcloseall int fcloseall ( void ) ; Zamknięcie wszystkich otwartych plików. fgetc int fgetc ( FILE *plik ); Odczyt kolejnego znaku. Zwraca liczbę całkowitaą 000 | kod_znaku fputc int fputc ( int znak, FILE *plik ) ; Zapis kolejnego znaku (liczba całkowita : 000 | kod). Zwraca znak lub EOF fgets char* fgets ( char *napis, int liczba, FILE *plik) ; Odczytuje ciąg znaków, maksymalnie liczba-1 znaków. Zwraca napis lub NULL. Metody i Języki Programowania ćwiczenie 2 fputs int fputs ( char *napis, FILE *plik ); Zapis ciągu znaków. Zwraca ostatni zapisany znak lub EOF. fscanf int fscanf(FILE *plik, const char *format, wskaźnik,...); Odczyt ciągów znaków i konwersji na wartości binarne (podobnie jak scanf) Zwraca liczbę wczytanych ciągów znaków lub EOF. fprintf int fprintf ( FILE *plik, const char *format, wyraŜenie, ...); Zapis ciągów znaków zadanych za pomocą wyraŜeń (podobnie jak printf) Zwraca liczbę zapisanych bajtów lub EOF. fread int fread (wskaźnik, int rozmiar, int liczba, Odczytanie zadanej liczby struktur danych, kaŜda o długości rozmiar Zwraca liczbę odczytanych struktur lub 0. fwrite int fwrite ( wskaźnik, int rozmiar, int liczba, Zapis wskazanej liczby struktur danych o długości rozmiar Zwraca liczbę zapisanych struktur lub 0. FILE *plik); FILE *plik ); feof int feof ( FILE *plik ); Odczyt stanu znacznika końca pliku. Zwraca !0 gdy napotkano EOF, przeciwnie 0. fseek int fseek (FILE *plik, long pozycja, Ustalenie aktualnej pozycji pliku cel : SEEK_SET - początek pliku, SEEK_CUR - aktualna pozycja pliku SEEK_END - koniec pliku Zwraca 0 gdy poprawnie, !0 gdy błąd fseek(opis, 0L, SEEK_END); rewind void rewind ( FILE *plik ); Ustalenie aktualnej pozycji na początku pliku. int cel);