PODSTAW PROGRAMOWANIA WYKŁAD 7 ŁAŃCUCHY

Podobne dokumenty
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h >

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

Pliki. Informacje ogólne. Obsługa plików w języku C

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

7 Przygotował: mgr inż. Maciej Lasota

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Programowanie w językach wysokiego poziomu

Biblioteka standardowa - operacje wejścia/wyjścia

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Program wykonujący operację na plikach powinien zachować schemat działania zapewniający poprawną pracę:

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Pliki. Informacje ogólne. Obsługa plików w języku C

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 9 - sem.iii. Dr inż. M. Czyżak

Podstawy programowania 1

Podstawy programowania w języku C++

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Tablice, funkcje - wprowadzenie

2 Przygotował: mgr inż. Maciej Lasota

Argumenty wywołania programu, operacje na plikach

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 7- sem.iii. M. Czyżak

DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE

ŁAŃCUCHY W JĘZYKU C/C++

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

Stałe i zmienne znakowe. Stała znakowa: znak

iii. b. Deklaracja zmiennej znakowej poprzez podanie znaku

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Języki i metodyka programowania. Wprowadzenie do języka C

Wskaźniki do funkcji. Wykład 11. Podstawy programowania ( język C ) Wskaźniki do funkcji (1) Wskaźniki do funkcji (2)

Języki programowania. Karolina Mikulska-Rumińska Pokój 573, tel Konsultacje wtorek 9-10.

Formatowane (tekstowe) wejście/wyjście. Binarne wejście/wyjście.

Podstawy Programowania

Programowanie Proceduralne

W języku C każdy plik fizyczny jest ciągiem bajtów, z których każdy może być niezależnie odczytany. Borland 01234

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Wstęp do Programowania, laboratorium 02

Plik jest reprezentowany przez strumień znaków (bajtów) o zmiennej długości. Koniec strumienia identyfikowany jest znacznikiem końca pliku EOF.

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

MATERIAŁY POMOCNICZE PODSTAWY PROGRAMOWANIA Na podstawie: Programowanie w C - Stworzone na Wikibooks, bibliotece wolny podręczników

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

Podstawy programowania w języku C++

Podstawy programowania w języku C++

Tablice deklaracja, reprezentacja wewnętrzna

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych

Podstawy programowania w języku C++

Programowanie w C Typ wskaźnikowy do typu znakowego i operacje na łańcuchach

1. Wprowadzanie danych z klawiatury funkcja scanf

Podstawy programowania w języku C++

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce.

Języki programowania obiektowego Nieobiektowe elementy języka C++

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach

Strumienie i pliki. Programowanie Proceduralne 1

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

dr inż. Jarosław Forenc

Spis treści JĘZYK C - ŁAŃCUCHY ZNAKÓW. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF22

Ghost in the machine

Podstawy programowania skrót z wykładów:

Operacje wejścia/wyjścia odsłona pierwsza

Podstawy programowania

Zmienne, stałe i operatory

Programowanie Procedurale. Pliki w języku C++

Programowanie Proceduralne

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Spis treści JĘZYK C - ŁAŃCUCHY ZNAKÓW. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF10Z

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

Programowanie strukturalne i obiektowe

Tablice wielowymiarowe. Przykład tablica 2-wymiarowa. Przykład. Przykład 3-wymiarowy. Tak naprawdę nie istnieją w C! Rozważmy tablicę o rozmiarze 3x2

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Struktury, unie, formatowanie, wskaźniki

Pytania sprawdzające wiedzę z programowania C++

wer. 7 z drobnymi modyfikacjami Wojciech Myszka :48:

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

KURS C/C++ WYKŁAD 1. Pierwszy program

Podstawy programowania w języku C++

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Transkrypt:

PODSTAW PROGRAMOWANIA WYKŁAD 7 ŁAŃCUCHY Łańcuch tekstowy w języku c jest pamiętany jako jednowymiarowa tablica znaków zakończona bajtem 0. char * tekst = dzień dobry wszystkim ; char tekst[22]= dzień dobry wszystkim char tekst[22]= d, z, i, e, ń,, d, o, b, r, y,, w, s, z, y, s, t, k, i, m, \0 ; KORZYSTANIE BEZ FUNKCJI (tylko wskaźniki) #include <string.h> void odwrocenie (char *s); int main() char ciag_znakow[20] = "akinhcetilop"; odwrocenie(ciag_znakow); printf("ciag znakow po odwroceniu: %s\n", ciag_znakow); void odwrocenie(char *s) char *wsk = s + strlen(s)-1; char temp; for (;wsk>s;wsk--,s++) temp = *s; *s = *wsk; *wsk = temp;

Najważniejsze funkcje biblioteki string.h char *strcat (char* strto, const char* strfrom); char *strchr(const char *s, int c); char *strrchr(const char *s, int c); int strcmp(const char *s1, const char *s2) char *strcpy (char* strto, const char* strfrom); char *strncpy (char* strto, const char* strfrom, size_t size); int strcoll(const char *s1, const char *s2) size_t strcspn(const char *s, const char *niepasujace); char* strstr (const char* str1, const char* str2); char *strtok(char *s, const char *delim); char *strtok_r(char *s, const char *delim, char **ptrptr); Funkcja dopisuje tekst z tablicy strfrom na koniec tekstu w tablicy strto. Funkcja strchr() zwraca wskaźnik do pierwszego wystąpienia znaku c w łańcuchu znaków s. Funkcja strrchr() zwraca wskaźnik do ostatniego wystąpienia znaku c w łańcuchu znaków s. Funkcja strcmp porównuje napisy s1 i s2. Funkcja zwraca liczbę mniejszą od zera, gdy s1 < s2, 0 gdy s1 jest taki sam jak s2 oraz liczbę większą od zera gdy s1 > s2. Funkcja kopiuje tekst z tablicy strfrom do tablicy strto. Funkcja kopiuje znak po znaku od początku, aż do końca tablicy lub znaku '\0', który też kopiuje. Funkcja kopiuje co najwyżej size znaków z tekstu w tablicy strfrom do tablicy strto. Funkcja kopiuje znak po znaku od początku, aż skopiuje size znaków lub napotka znak '\0', wtedy za resztę znaków do skopiowania wstawia '\0'. Funkcja strcoll porównuje łańcuch znaków s1 z s2 korzystając z zasad określonych przez LC_COLLATE. Funkcja zlicza od początku ilość znaków w łańcuchu s które nie należą do niepasujace i zatrzymuje się na pierwszym pasującym którego nie liczy. Ilość zliczonych znaków jest zwracana. Szuka pierwszego wystąpienia łańcucha znakowego str2 w łańcuchu str1. wydzielanie słów z łańcuchów Struktury Struktura (czasami nazywana tak jak w Pascalu rekordem) składa się ze stałej liczby składowych, czyli pól. Każde pole ma unikalną nazwę i może (nie musi) być innego typu niż pozostałe pola.

Deklaracja typu Źródło: K. Koleśnik: Tablice informatyczne C++, Helion 2006, Deklaracja zmiennej rekordowej Źródło: K. Koleśnik: Tablice informatyczne C++, Helion 2006, Inicjowanie struktury Rzadko wykorzystywaną cechą zmiennych rekordowych jest możliwość ich inicjowania. Należy zwrócić uwagę, aby wartości dla poszczególnych pól były podane dokładnie w takiej kolejności jak w definicji struktury. typedef struct

char imie[20]; char nazwisko[30]; int wiek; typ_rekordu; typ_rekordu osoba="jan","kowalski",35; printf("%s %s ma %d lat",osoba.imie, osoba.nazwisko, osoba.wiek); Struktury a klasy Programując w C++ z wykorzystaniem jego cech obiektowych praktycznie nie używamy struktur gdyż tą samą (a tak naprawdę znacznie rozszerzoną) funkcjonalność oferują programiście klasy. STRUMIENIE I/O Każdy program w C musi wykonywać operacje na strumieniach wejścia-wyjścia. Podstawowe funkcje (nie obiektowe) wyjścia to printf(), puts(), Podstawowe funkcje wejścia to scanf() i gets(). Funkcjami wyjścia nazywamy funkcje, które wysyłają dane poza program (np. na ekran, do drukarki lub do plików). Natomiast funkcjami wejścia nazywamy funkcje, które pobierają dane z zewnątrz(np. z klawiatury czy z pliku) do programu. Strumień jest ciągiem bajtów danych przesyłanych do programu (strumień wejścia) lub wysyłanych na zewnątrz programu(strumień wyjścia). Rozróżniamy dwa rodzaje strumieni: tekstowe ora zbinarne.strumienie tekstowe są pogrupowane w wiersze tekstu (do 255 znakóww jednym wierszu) i zakończone znakiem /0 (znak końca linii).strumienie binarne to ciąg danych reprezentowanych przez zerai jedynki. Tego typu używa się podczas operacji na plikach.w języku C istnieje pięć standardowych (zdefiniowanych) strumieni wejścia-wyjścia: stdin, stdout, stderr, stdprn i stdaux.

Stdin strumień standardowego wejścia. Korzysta z danych tekstowychwpisanych z klawiatury. Stdout strumień standardowego wyjścia. Służy do przesyłania danychtekstowych na ekran. Stderr strumień standardowego błędu. Służy do wyświetlania błędówna ekranie komputera. Stdprn strumień drukarki. Służy do wysyłania danych tekstowych doportu drukarki.stdaux strumień pomocniczy. Służy do przesyłania danych do portucom1.funkcje te dzielą się na: pobierające pojedyncze znaki z klawiatury, np. getchar(); pobierające z klawiatury całe wiersze, np. gets(); pozwalające na manipulację strumieniami wejścia scanf(). Funkcja getchar() pobiera pojedyncze znaki ze standardowego wejścia Napisz program, który pobierze jeden znak z klawiatury, a następnie wyświetli go na ekranie. Użyj funkcji getchar(). int znak; int main() znak = getchar(); printf("wpisales znak: "); putchar(znak); printf("\n");

funkcja scanf(). Mówimy, że funkcja manipuluje strumieniami,ponieważ może interpretować pobrane wartości z klawiaturyoraz przypisywać je odpowiednim typom zmiennych. Służy do tegotzw. łańcuch formatowania (z ang. format string).scanf("%d", &zmienna); Pierwszy argument funkcji scanf(), czyli znak %d w powyższym przykładzie,jest nazywany łańcuchem formatowania. Znak & przed zmienną jest operatorem adresu i umieszczony przed zmienną powoduje otrzymanie jej adresu. Łańcuch formatowania składa się ze specyfikatorów konwersji. Każdemu z nich musi odpowiadać adres zmiennej. W skład każdego specyfikatora konwersji wchodzą następujące znaki: znak %; tzw. specyfikator typu (np. znak d w %d), który informuje funkcję scanf() o typie zmiennej, jakiej ma być przypisana wartość pobrana ze standardowego wejścia opcjonalnie liczba, która określa szerokość pola, czyli liczbę znaków, jaką scanf() ma pobrać ze standardowego wejścia; opcjonalnie tzw. modyfikator precyzji (z ang. precision modificator), który modyfikuje znaczenie specyfikatora typu (listę modyfikatorów precyzji przedstawiono w tabeli 4.2). Specyfikatory typu Typ Argument Znaczenie specyfikatora typu d int * Wartość typu integer w postaci dziesiętnej i int * Wartość typu integer w postaci dziesiętnej, oktalnej lub szesnastkowej

o int * Wartość typu integer w postaci oktalnej u unsigned int * Dodatnia wartość typu integer w postaci dziesiętnej x int * Wartość typu integer w postaci heksadecymalnej c char * Pojedyncze znaki lub więcej znaków (jeżeli podana jest szerokość pola) s char * Łańcuchy znaków e,f,g float * Liczba przecinkowa [ ] char * Łańcuch znaków (ze standardowego wejścia przyjmowane są tylko znaki podane w nawiasach) [^ ] char * Łańcuch znaków (przyjmowane są wszystkie znaki oprócz tych, które zostały podane Modyfikator precyzji Znaczenie h Znak ten umieszczony przed specyfikatorami typu d, i, o, u lub x informuje funkcję o tym, że argument jest wskaźnikiem do typu short l Znak ten umieszczony przed specyfikatorami typu d, i, o, u lub x informuje funkcję o tym, że argument jest wskaźnikiem do typu long L Znak ten umieszczony przed specyfikatorami typu e, f lub g informuje funkcję o tym, że argument jest wskaźnikiem do typu long double

Funkcje wyjścia Funkcja putchar() wysyła pojedyncze znaki do standardowego wyjścia (na ekran). Prototyp funkcji putchar(): int putchar(int c); zarówno argument funkcji, jak i wartość zwracana są typu int, to odpowiedniki liczbowe poszczególnych znaków w kodzie ASCII (0 255). Ć W I C Z E N I E 4.4 Napisz program, który wyświetli na ekranie wszystkie znaki kodu ASCII. Użyj funkcji putchar(). int main() int licznik; for (licznik = 0; licznik < 256; licznik++) putchar(licznik); printf("\n"); PLIKI Aby utworzyć plik w języku C, należy zdefiniować wskaźnik do pliku.w pliku nagłówkowym <stdio.h> jest zdefiniowany specjalny wskaźnikdo tego celu FILE *.Deklaracja wskaźnika do pliku wygląda tak: FILE *wskaznik_do_pliku;

Otwieranie, tworzenie i zamykanie plików tekstowych Aby utworzyć nowy plik lub otworzyć już istniejący, używamy funkcji fopen o następującym prototypie: FILE* fopen(const char* nazwa_pliku, const char* tryb); (Funkcja fopen() zwraca wskaźnik do pliku lub NULL jeśli nie można otworzyć pliku). Następnie za pomocą tego wskaźnika można przesuwać się w obrębie pliku i odpowiednio go edytować lub odczytywać. Nazwa_pliku to ścieżka do pliku lub sama nazwa pliku (jeśli plik znajduje się w tym samym katalogu, co program wywołujący funkcję). Warto pamiętać, że w systemie Windows do definiowania ścieżki używa się backslasha \ np. C:\Programy\nowy_plik.txt. Nie można niestety definiować ścieżek w ten sposób, - błąd kompilatora Rozwiązaniem jest zastąpienie jednego backslasha dwoma \\. Z kolei tryb oznacza sposób otwarcia pliku. Trzy najważniejsze tryby to: r otwarcie pliku do odczytu; w otwarcie pliku do zapisu; a otwarcie pliku w trybie dopisywania. Tryb zapisu różni się od trybu dopisywania tym, że przy zapisywaniu nadpisywane są ewentualnie już istniejące dane. Natomiast w trybie dopisywania edycja rozpoczynana jest od końca pliku, więc wszystkie nowe dane zostają dopisane do już istniejącego tekstu. Można wybrać tylko jeden z tych podstawowych trybów (istnieją również bardziej zaawansowane tryby). Jeżeli plik nie istnieje, a wybrana została opcja w lub a, tworzony jest nowy plik.

Na koniec plik należy zamknąć za pomocą funkcji o nazwie fclose: int fclose(file *wskaznik_do_pliku) Jeżeli operacja się powiedzie, zwracana jest wartość 0, a jeśli nie zostaje zwrócony tzw. kod błędu EOF (zdefiniowany w pliku nagłówkowym <stdio.h>). Odczytywanie pliku tekstowego W celu odczytania pliku tekstowego należy użyć jednej z trzech funkcji: fscanf, fgetc lub fgets. Odczytywanie pliku za pomocą funkcji fscanf fscanf działa tak jak scanf, tyle że dodajemy dodatkowo, jako pierwszy parametr, wskaźnik do pliku, który chcemy odczytać, np.: fscanf(wskaznik_do_pliku, %d, zmienna_int) Takie wywołanie funkcji spowoduje odczytanie elementu z pliku jako typ int i przypisanie go do zmiennej zmienna_int. zapis: fscanf(stdin, %d, zmienna_int) jest równoznaczny z zapisem: scanf( %d, zmienna_int) ponieważ jako pierwszy argument podany został tzw. standardowy strumień wejścia czyli znaki wpisywane z klawiatury. fscanf zwraca liczbę przeczytanych elementów lub EOF, jeśli wystąpi błąd. Po odczytaniu kolejnych elementów wskaźnik pliku jest odpowiednio przesuwany na miejsce, w którym kończy się dany element.

Najlepiej korzystać z funkcji fscanf, jeśli odczytujemy plik, który zawiera szczególny rodzaj danych nie tylko tekst, ale np. liczby różnych typów. Można wtedy bezpośrednio zapisać kolejne elementy pliku do odpowiednich zmiennych, bez konieczności późniejszego skomplikowanego Ć W I C Z E N I E 4.10 Napisz program, który wypisze na ekranie zawartość utworzonego wcześniej pliku tekstowego o nazwie plik.txt. Plik ten zawiera tylko liczby typu int oraz float zapisane jedna po drugiej. Wykorzystaj funkcję fscanf. W dowolnym edytorze tekstowym utwórz plik plik.txt o następującej zawartości: 1 1.2 2 2.4 3 3.5 Program służący do jego odczytania może wyglądać następująco: int main() FILE *plik; int a; float b; if ((plik = fopen( plik.txt, r ))!= NULL) while (fscanf(plik, %d %f, &a, &b) == 2) printf ( %d %f, a, b); else fclose(plik);

4.11 Napisz program, który wypisze zawartość pliku plik.txt na ekranie. Plik plik.txt zawiera tylko tekst. Wykorzystaj funkcję fgetc. int main() FILE *plik; int a; float b; if ((plik = fopen( plik.txt, r ))!= NULL) while (fscanf(plik, %d %f, &a, &b) == 2) printf ( %d %f, a, b); else fclose(plik); 4.12 Napisz program, który wypisze zawartość pliku plik.txt na ekranie. Plik ten zawiera tylko tekst. Wykorzystaj funkcję fgets. int main() FILE *plik; har lancuch[80]; f ((plik = fopen( plik.txt, r ))!= NULL)

while (fgets(lancuch, sizeof(lancuch), plik)!= NULL) printf( %s, lancuch); else fclose(plik); 4.13 Napisz program, który utworzy nowy plik tekstowy o nazwie plik.txt, a następnie zapisze do niego w kolejnych liniach liczby od 0 do 10. /* funkcji fprintf() */ nt main() FILE *plik; nt i; f ((plik = fopen( plik.txt, w ))!= NULL) for (i = 0; i <= 10; i++) if (fprintf(plik, %d\n, i) < 0) else fclose(plik); Zapisywanie do pliku tekstowego za pomocą funkcji fputc

int fputc(int znak, FILE *wskaznik_do_pliku) Każde wywołanie funkcji fputc powoduje zapisanie do pliku, na który wskazuje wskaznik_do_pliku, pojedynczego znaku (przekazanego jakoparametr int znak). W przypadku poprawnego wykonania funkcjazwraca zapisany znak (jako int). W przeciwnym razie zwracana jestwartość EOF.Ebookpoint.pl kopia dla: Andrzej 4.14 Napisz program, który otworzy istniejący plik tekstowy i skopiuje jego zawartość do innego, nowo utworzonego pliku.wykorzystaj funkcje fputc i fgetc. Nazwy pliku źródłowego i docelowego muszą zostać podane z linii poleceń. /* Program kopiujacy plik tekstowy przy uzyciu */ /* funkcji fputc i fgetc */ int main(int argc, char* argv[]) FILE *plik_zrodlowy, *plik_docelowy; int znak; if (argc!= 3) printf( Uruchomienie programu: nazwa_programu plik_zrodlowy ik_docelowy \n ); if ((plik_zrodlowy = fopen(argv[1], r )) == NULL) if ((plik_docelowy = fopen(argv[2], w )) == NULL) while ((znak = fgetc(plik_zrodlowy))!= EOF) fputc(znak, plik_docelowy); fclose(plik_zrodlowy); fclose(plik_docelowy);