Podstawy informatyki - Wydział Elektryczny
Transkrypt
Podstawy informatyki - Wydział Elektryczny
Podstawy informatyki Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne Rok akademicki 2006/2007 Wykład nr 2 (16.03.2007) dr inŜ. Jarosław Forenc Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 Plan wykładu nr 2 Operacje wejścia/wyjścia w języku C, strumienie, pliki Operacje na plikach otwarcie pliku zamknięcie pliku Pliki tekstowe i binarne dr inŜ. Jarosław Forenc 2/34 Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 3/34 Operacje wejścia/wyjścia, strumienie, pliki operacje wejścia/wyjścia nie są elementami języka C - zrealizowano je jako funkcje zewnętrzne, znajdujące się w bibliotekach dostarczanych wraz z kompilatorem podstawowym pojęciem związanym z operacjami wejścia/wyjścia w języku C jest strumień (ang. stream) strumień jest pojęciem abstrakcyjnym - nazwa strumień bierze się z analogii między przepływem danych, a np. wody w strumieniu dane płyną od źródła do odbiorcy, a zadaniem uŜytkownika jest określenie źródła i odbiorcy, wybór typu danych oraz sposobu ich przesyłania strumień moŜe być skojarzony ze zbiorem danych na dysku lub zbiorem danych pochodzących z urządzenia znakowego, np. klawiatury strumienie reprezentowane są przez zmienne będące wskaźnikami na struktury typu FILE (definicja w pliku nagłówkowym stdio.h) typedef struct _iobuf { char* _ptr; int _cnt; char* _base; int _flag; int _file; int _charbuf; int _bufsiz; char* _tmpfname; } FILE; Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 4/34 Operacje wejścia/wyjścia, strumienie, pliki gdy program rozpoczyna działanie otwarte są trzy standardowe strumienie wejścia/wyjścia: stdin - standardowe wejście (konsola - klawiatura) stdout - standardowe wyjście (konsola - monitor) stderr - standardowe wyjście dla komunikatów o błędach (konsola - monitor) definicje powyŜszych strumieni oraz prototypy funkcji wejścia/wyjścia umieszczone są w pliku nagłówkowym stdio.h strumień wiąŜe się z plikiem za pomocą otwarcia, zaś połączenie to jest przerywane przez zamknięcie strumienia wszystkie operacje związane z przetwarzaniem pliku zazwyczaj składają się z trzech części: 1. Otwarcie pliku (strumienia) 2. Operacje na pliku (strumieniu), np. czytanie, pisanie 3. Zamknięcie pliku (strumienia) kaŜdy strumień moŜe pracować w trybie binarnym lub tekstowym tryb pracy strumienia moŜna określić podczas jego otwierania Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 5/34 Operacje na plikach - otwarcie pliku do otwarcia pliku słuŜy funkcja fopen(), która wiąŜe plik ze strumieniem FOPEN stdio.h FILE* fopen(const char *fname, const char *mode); fname jest łańcuchem znaków zawierającym nazwę otwieranego pliku, nazwa moŜe zawierać całą ścieŜkę dostępu do pliku mode określa tryb otwarcia pliku (rodzaj dostępu do pliku), jako tryb otwarcia pliku moŜe występować: ”r” ”w” - czytanie - zapisywanie, jeśli pliku nie ma to zostanie on utworzony, jeśli jest, to jego poprzednia zawartość zostanie usunięta ”a” - dopisywanie - na końcu istniejącego pliku lub od początku nowego ”r+” - otwarcie istniejącego pliku do czytania i pisania (aktualizacji) ”w+” - utworzenie nowego pliku do czytania i pisania (aktualizacji), istniejący plik zostanie zamazany ”a+” - dopisywanie na końcu pliku z moŜliwością czytania Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 6/34 Operacje na plikach - otwarcie pliku funkcja fopen() zwraca wskaźnik na strukturę FILE skojarzoną z otwartym plikiem lub NULL, w przypadku, gdy otwarcie pliku nie powiodło się po otwarciu pliku odwołujemy się do niego przez wskaźnik pliku dodanie litery t w trybie otwarcia oznacza otwarcie pliku w trybie tekstowym (domyślne), natomiast dodanie litery b oznacza otwarcie pliku w trybie binarnym Przykład: FILE *stream1, *stream2; stream1 = fopen(”dane.txt”,”r”); stream2 = fopen(“c:\\baza\\data.bin”,”wb”); plik dane.txt otwierany jest w trybie tekstowym tylko do czytania pliku data.bin otwierany jest w trybie binarnym tylko do zapisu przy podawaniu ścieŜki dostępu do pliku, zamiast jednego znaku \ naleŜy podawać dwa znaki - \\ Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 7/34 Operacje na plikach - zamknięcie pliku plik zamykany jest funkcją fclose() FCLOSE int fclose(FILE *stream); funkcja fclose() zwraca zero jeśli zamknięcie pliku było pomyślne lub EOF w przypadku wystąpienia błędu po zamknięciu pliku wskaźnik stream moŜe być wykorzystany do otwarcia innego pliku w programie moŜe być jednocześnie otwartych wiele plików stdio.h Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 8/34 Operacje na plikach - przykład #include <stdio.h> int main() { FILE *stream; stream = fopen("plik.txt","w+"); if (stream == NULL) { printf("Blad otwarcia pliku.\n"); return (-1); } /* przetwarzanie pliku */ fclose(stream); return (0); } Otwarcie i zamknięcie pliku Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc Pliki tekstowe i binarne wyróŜnia się dwa rodzaje plików: tekstowe i binarne elementami pliku tekstowego są wiersze, mogą one mieć róŜną długość w systemie DOS/Windows kaŜdy wiersz pliku zakończony jest parą znaków: CR, ang. carriage return - powrót karetki, kod ASCII - 1310 (0D16) LF, ang. line feed - przesunięcie o wiersz, kod ASCII - 1010 (0A16) załóŜmy, Ŝe plik tekstowy ma postać: rzeczywista zawartość pliku jest następująca: wydruk zawiera: przesunięcie od początku pliku (szesnastkowo), wartości poszczególnych bajtów pliku (szesnastkowo) i znaki odpowiadające tym wartościom (traktując wartości jako kody ASCII) 9/34 Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 10/34 Pliki tekstowe i binarne w czasie wczytywania tekstu z pliku do pamięci komputera znaki CR i LF zastępowane są jednym znakiem - LF znak LF w języku C reprezentowany jest przez \n, zaś CR - przez \r #include <stdio.h> 10 A int main() { printf("%d %h",‘\n‘,‘\n‘); return (0); } przy zapisywaniu łańcucha znaków do pliku tekstowego mamy sytuację odwrotną znak LF zastępowany jest parą CR i LF Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 11/34 Pliki tekstowe i binarne w systemie Linux znakiem końca wiersza jest tylko LF o kodzie ASCII - 1010 (0A16) załóŜmy, Ŝe plik tekstowy ma postać: rzeczywista zawartość pliku jest następująca: podczas przesyłania pliku tekstowego (np. przez protokół ftp) z systemu Linux do systemu DOS/Windows pojedynczy znak LF zamieniany jest automatycznie na parę znaków CR i LF błędne przesłanie pliku tekstowego (w trybie binarnym) powoduje nieprawidłowe jego wyświetlanie: Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 12/34 Operacje we/wy w języku C - funkcja printf() PRINTF stdio.h int printf(”tekst opcjonalny+specyfikator”,argumenty); funkcja printf() wyprowadza tekst, gdy w tekście występuje specyfikator (specyfikator formatu) zaczynający się od %, to następuje przekształcenie w miejsce specyfikatora wstawiana jest wartość argumentu specyfikator formatu określa typ oraz sposób wyświetlania zmiennej na ekranie liczba specyfikatorów formatu musi być zgodna z liczbą argumentów jeśli typ argumentu zostanie błędnie określony to na ekranie wyświetlona zostanie nieprawidłowa wartość funkcja printf() zwraca liczbę wyprowadzonych bajtów lub EOF jeśli wystąpił błąd specyfikator formatu ma następującą postać: specyfikator = %[znacznik][szerokość][.precyzja][modyfikator]typ Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc Operacje we/wy w języku C - funkcja printf() specyfikator = %[znacznik][szerokość][.precyzja][modyfikator]typ typ - określa rodzaj i typ argumentu: d, i u x, X o f e, E g, G s c - liczba całkowita ze znakiem, dziesiętna liczba całkowita bez znaku, dziesiętna liczba całkowita bez znaku, szesnastkowa liczba całkowita bez znaku, ósemkowa liczba rzeczywista w postaci [-]ddd.ddd liczba rzeczywista w formacie „naukowym” (z uŜyciem e lub E) [-]d.ddd…e[+/-]ddd lub [-]d.ddd…E[+/-]ddd - liczba rzeczywista (format f lub e) - ciąg znaków - pojedynczy znak 13/34 Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 14/34 Operacje we/wy w języku C - funkcja printf() specyfikator = %[znacznik][szerokość][.precyzja][modyfikator]typ [znacznik] - ”+” - przed liczbą stawiany jest znak (plus lub minus) ”-” - wyrównanie wyświetlanych znaków do lewej strony ” ” - spacja, jeśli wartość jest nieujemna, zamiast plus będzie wyświetlana spacja, w przypadku wartości ujemnych będzie wyświetlany minus [szerokość] - określa minimalną liczbę wyprowadzanych znaków, jeśli znaków jest mniej to pole jest z lewej strony uzupełniane spacjami, jeśli więcej - podana szerokość jest ignorowana [.precyzja] - liczba znaków po kropce dziesiętnej [modyfikator] - słuŜy do zmodyfikowania podstawowego typu podawanego przez znak typu: l - stosowany tylko do liczb całkowitych do wyświetlania wartości typu long (moŜe stać przed d, i, o, u, x, X, O, np. %ld, %li) L - stosowany do wyświetlania wartości rzeczywistych typu long double Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 15/34 Operacje we/wy w języku C - funkcja scanf() SCANF stdio.h int scanf(”specyfikator+tekst”,argumenty); funkcja scanf() wczytuje znaki ze standardowego wejścia (klawiatura), interpretuje je zgodnie z zadanym specyfikatorem (specyfikatorem formatu) i przypisuje wyniki argumentom w odpowiedniej kolejności jeśli obok specyfikatora formatu pojawia się dodatkowa sekwencja znaków, to powinna jej odpowiadać sekwencja znaków w czytanym polu - znaki te zostaną przeczytane, ale nie będą zapamiętane funkcja scanf() zwraca liczbę argumentów, którym poprawnie nadano wartości lub EOF po napotkaniu znacznika końca pliku specyfikator formatu ma następującą postać: specyfikator = %[szerokość][modyfikator]typ Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 16/34 Operacje we/wy w języku C - funkcja scanf() specyfikator = %[szerokość][modyfikator]typ typ - określa rodzaj i typ argumentu: d - liczba całkowita dziesiętna, typ int D - liczba całkowita dziesiętna, typ long o - liczba całkowita ósemkowa, typ int - liczba całkowita ósemkowa, typ long O - liczba całkowita szesnastkowa, typ int x X - liczba całkowita szesnastkowa, typ long - liczba całkowita dziesiętna, ósemkowa lub szesnastkowa, typ int i I - liczba całkowita dziesiętna, ósemkowa lub szesnastkowa, typ long - liczba całkowita dziesiętna bez znaku, typ unsigned u U - liczba całkowita dziesiętna bez znaku, typ unsigned long f, e, E - liczba rzeczywista, typ float g, G - liczba rzeczywista, typ float - ciąg znaków s c - pojedynczy znak, typ char Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 17/34 Operacje we/wy w języku C - funkcja scanf() specyfikator = %[szerokość][modyfikator]typ [szerokość] - określa ile znaków zostanie przeczytanych [modyfikator] - słuŜy do zmodyfikowania podstawowego typu podawanego przez znak typu: l - zmienia wszystkie typy całkowitoliczbowe na ich długie wersje; zastosowany do znaków typu f, e, E, g, G spowoduje interpretację zawartości pól wejściowych jako liczb typ double L - zastosowany do znaków typu f, e, E, g, G spowoduje interpretację zawartości pól wejściowych jako liczb typ long double h - typy całkowitoliczbowe będą traktowane jako short Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 18/34 Operacje we/wy w języku C - przykład Podaj date (rrrr-mm-dd): 2007-03-14 #include <stdio.h> #include <stdlib.h> Rok: Miesiac: Dzien: int main() { int r,m,d; 2007 3 14 printf("Podaj date (rrrr-mm-dd): "); scanf("%d-%d-%d",&r,&m,&d); printf("\n"); printf("Rok: printf("Miesiac: printf("Dzien: %d\n",r); %d\n",m); %d\n",d); system("pause"); return 0; } Wczytanie daty funkcją scanf Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 19/34 Operacje we/wy w języku C - „rodzina” funkcji printf() funkcja printf() ma swoją „rodzinę” funkcji, które przyjmują specyfikację formatu według takich samych reguł jak printf() PRINTF stdio.h int printf(const char *format, ...); printf() wyprowadza dane do strumienia stdout (ekran) FPRINTF stdio.h int fprintf(FILE *stream, const char *format, ...); fprintf() wyprowadza dane do otwartego strumienia wskazywanego przez stream SPRINTF int sprintf(char *bufor, const char *format, ...); sprintf() wyprowadza dane bufora pamięci wskazywanego przez bufor stdio.h Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 20/34 Operacje we/wy w języku C - przykład #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { FILE *stream; int i; if ((stream=fopen("plik.txt","w")) == NULL) { printf("Blad otwarcia pliku\n"); return (-1); } 3 51 93 10 93 64 63 0 46 24 srand(time(NULL)); for (i=0; i<10; i++) fprintf(stream,"%d\n",rand()); fclose(stream); system("pause"); return 0; } Zapisanie do pliku tekstowego 10 wygenerowanych pseudolosowo liczb Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 21/34 Operacje we/wy w języku C - „rodzina” funkcji scanf() funkcja scanf() ma swoją „rodzinę” funkcji, które przyjmują specyfikację formatu według takich samych reguł jak scanf() SCANF stdio.h int scanf(const char *format, ...); scanf() wprowadza dane ze strumienia stdin (klawiatura) FSCANF stdio.h int fscanf(FILE *stream, const char *format, ...); fscanf() czyta dane z otwartego strumienia stream do listy argumentów SSCANF int sscanf(const char *bufor, const char *format, ...); sscanf() wprowadza dane z bufora pamięci bufor do argumentów stdio.h Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 22/34 Operacje we/wy w języku C - przykład #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { FILE *stream; int i, x; if ((stream=fopen("plik.txt","r")) == NULL) { printf("Blad otwarcia pliku\n"); return (-1); } 3 51 93 10 93 64 63 0 46 24 fscanf(stream,"%d",&x); while(!feof(stream)) { printf("%d\n",x); fscanf(stream,"%d",&x); } fclose(stream); system("pause"); return 0; } Odczytanie liczb z pliku tekstowego i wyświetlenie ich na ekranie Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 23/34 Operacje we/wy w języku C - przykład Uwagi do przykładu: sposób zapisu liczb w pliku wejściowym nie ma znaczenia dla prawidłowości ich odczytu liczby powinny być oddzielone od siebie znakami spacji, tabulacji lub znakiem nowego wiersza Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 24/34 Operacje na plikach binarnych FREAD stdio.h size_t fread(void *p, size_t s, size_t n, FILE *stream); funkcja fread() czyta n elementów o rozmiarze s bajtów kaŜdy z pliku wskazywanego przez stream i umieszcza odczytane dane w obszarze pamięci wskazywanym przez p FWRITE stdio.h size_t fwrite(const void *p, size_t s, size_t n, FILE *stream); funkcja fwrite() zapisuje n elementów o rozmiarze s bajtów kaŜdy do pliku wskazywanego przez stream biorąc dane z obszaru pamięci wskazywanego przez p obie funkcje, fread() i fwrite(), zwracają liczbę przetworzonych (zapisanych lub odczytanych elementów) - liczba ta jest róŜna od n, gdy wystąpił błąd końca strumienia (czytanie) lub błąd zapisu Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 25/34 Operacje na plikach binarnych - przykład #include <stdio.h> int main() { FILE *plik; int d1 = 15, d2; float tab1[5]={1.0,2.0,3.0,4.0,5.0}; float tab2[5]; plik = fopen("data.bin","wb"); fwrite(&d1,sizeof(int),1,plik); fwrite(tab1,sizeof(float),5,plik); fclose(plik); plik = fopen("data.bin","rb"); fread(&d2,sizeof(int),1,plik); fread(tab2,sizeof(tab2),1,plik); fclose(plik); return 0; } Operacje na pliku binarnym Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 26/34 Operacje na plikach binarnych - przykład #include <stdio.h> #include <stdlib.h> int main() { FILE *plik; int liczba; plik = fopen("plik.bin","rb"); 37 31 83 27 6 62 31 50 fread(&liczba,sizeof(int),1,plik); while(!feof(plik)) { printf("%d\n",liczba); fread(&liczba,sizeof(int),1,plik); } fclose(plik); system("pause"); return 0; } Wyświetlenie zawartości pliku binarnego zawierającego liczby typu int Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 27/34 Operacje na plikach binarnych - przykład po otwarciu pliku ustawiany jest specjalny wskaźnik, który określa pozycję, z której będą odczytywane dane - przy otwarciu pliku do czytania jest to początek pliku po odczytaniu jednej liczby: fread(&liczba,sizeof(int),1,plik); wskaźnik jest automatycznie przesuwany o sizeof(int) bajtów po odczytaniu kolejnej liczby: fread(&liczba,sizeof(int),1,plik); wskaźnik jest ponownie przesuwany o sizeof(int) bajtów na powyŜszym rysunku moŜna zaobserwować sposób zapisu liczb typu int w pliku binarnym zawartość pliku jest następująca: 37 31 83 27 6 62 31 50 Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 28/34 Operacje we/wy w języku C - funkcja getc() GETC stdio.h int getc(FILE *stream); funkcja getc() czyta jeden znak z aktualnej pozycji otwartego strumienia stream i uaktualnia pozycję zmienna stream powinna wskazywać strukturę FILE reprezentującą otwarty strumień skojarzony z otwartym plikiem (moŜe to być jeden ze standardowo otwartych strumieni, np. stdin) funkcja zwraca wartość całkowitą kodu wczytanego znaku lub wartość EOF jeśli wystąpił błąd lub przeczytany został znacznik końca pliku Przykład: int znak; znak = getc(stdin); Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 29/34 Operacje we/wy w języku C - funkcja putc() PUTC stdio.h int putc(int znak, FILE *stream); funkcja putc() wypisuje znak do otwartego strumienia reprezentowanego przez argument stream zmienna stream powinna wskazywać strukturę FILE reprezentującą otwarty strumień skojarzony z otwartym plikiem (moŜe to być jeden ze standardowo otwartych strumieni, np. stdout) jeśli wykonanie zakończyło się poprawnie funkcja zwraca wypisany znak lub wartość EOF jeśli wystąpił błąd Przykład: int znak; putc(znak,stdout); Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 30/34 Operacje we/wy w języku C - funkcja gets() GETS stdio.h char* gets(char *s); funkcja gets() czyta do bufora pamięci wskazywanego przez argument s linię znaków ze strumienia stdin (standardowo klawiatura) wczytywanie jest kończone po napotkaniu znacznika nowej linii ’\n’ znacznik nowej linii ’\n’ zastępowany jest znakiem końca łańcucha ’\0’ funkcja gets() umoŜliwia wczytanie łańcucha zawierającego spacje i tabulatory jeśli wykonanie zakończyło się poprawnie, to funkcja gets() zwraca wskazanie do łańcucha s lub NULL jeśli napotka znacznik końca pliku lub gdy wystąpił błąd Przykład: char s[80]; gets(s); Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 31/34 Operacje we/wy w języku C - funkcja puts() PUTS stdio.h int puts(const char *s); funkcja puts() wypisuje łańcuch s do strumienia stdout (standardowo ekran), zastępując znak ’\0’ znakiem ’\n’ jeśli wykonanie zakończyło się poprawnie, to funkcja puts() zwraca ostatni wypisany znak lub EOF jeśli wystąpił błąd Przykład: char s[80]; gets(s); /* ... */ puts(s); Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 32/34 Operacje we/wy w języku C - funkcje fgetc() i fputc() FGETC stdio.h int fgetc(FILE *stream); funkcja fgetc() czyta jeden znak ze strumienia wskazywanego przez stream zwraca przeczytany znak po przekształceniu go na typ int jeśli wykonanie zakończyło się poprawnie lub EOF jeśli wystąpił błąd lub jeśli został przeczytany znacznik końca pliku FPUTC stdio.h int fputc(int znak, FILE *stream); funkcja fputc() pisze znak do otwartego strumienia reprezentowanego przez argument stream jeśli wykonanie zakończyło się poprawnie zwraca wypisany znak lub EOF jeśli wystąpił błąd Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 33/34 Operacje we/wy w języku C - przykład #include <stdio.h> #include <stdlib.h> int main() { FILE *plik; int chr; plik=fopen("plik.txt","r+"); while ((chr=fgetc(plik))!=EOF) printf("%c",chr); fclose(plik); system("pause"); return 0; } Wyświetlenie zawartości pliku tekstowego Podstawy informatyki (st. niestacjonarne, 2006/2007) Wykład nr 2 dr inŜ. Jarosław Forenc 34/34 Operacje we/wy w języku C - funkcje fgets() i fputs() FGETS stdio.h char* fgets(char *s, int ile, FILE *stream); czyta do bufora pamięci wskazanego przez s co najwyŜej ile-1 znaków z otwartego strumienia reprezentowanego przez stream, kończy czytanie po napotkaniu znacznika końca linii ’\n’ po ostatnim przeczytanym znaku wstawia znak ’\0’ do bufora s, tworząc łańcuch jeśli wykonanie zakończyło się poprawnie to zwraca wskazanie do łańcucha s lub NULL jeśli napotka znacznik końca pliku albo gdy wystąpił błąd FPUTS stdio.h int fputs(const char *s, FILE *stream); wypisuje łańcuch s do strumienia stream, nie dołącza znaku końca wiersza ’\n’ jeśli wykonanie zakończyło się poprawnie to zwraca ostatni wypisany znak lub EOF jeśli wystąpił błąd