Język C (ANSI)

Komentarz:

W przykładach wyruznione są elementy na które zdaniem autorów należy zwrócić szczegółną uwage.

  1. Zmienne

    1. Typy podstawowe

    2. Typy

      Kwalifikatory

      char - znak lub niewielka liczba całkowita

      int - liczba całkowita (domyślny)

      float - liczba zmiennoprzecinkowa

      double - długa liczba zmiennoprzecinkowa

      void - brak typu

      short - krotka

      long - długa

      signed - ze znakiem (domyślny)

      unsigned - bez znaku

        1. Typy stosowane

        2. Pełna nazwa

          Skrócona nazwa 1

          Skrócona nazwa 2

          Skrócona nazwa 3

          signed long int

          long

          long int

          signed long

          unsigned long int

          unsigned long

          signed int

          int

          signed

          unsigned int

          unsigned

          signed short int

          short

          short int

          signed short

          unsigned short int

          unsigned short

          signed char

          char

          unsigned char

          float

          double

          long double

          void

            1. Deklaracja zmiennych

            2. Zmienne

              Tablice

              int A;

              unsigned long B;

              signed short int C1;

              short C2;

              double D;

              int Wiek,Ilosc;

              double X,Y,Odleglosc;

              int A[3];

              unsigned long B[7];

              signed short int C1[5];

              short C2[30];

              double D[19];

              int Wiek[3],Ilosc[3];

              double X[4],Y[4],Odleglosc[4*4];

                1. Deklaracja + Inicjalizacja zmiennych

                2. Zmienne

                  Znaki specjalne

                  long LS1=320000L,LS2=-420000L;

                  unsigned long LU=320000LU;

                  int IS1=32,IS2=-17;

                  unsigned IU=17U;

                  char C='A';

                  float F1=12.5F,F2=.125E2F;

                  double D1=324.4,D2=.3244E3;

                  long double LD=-65E300L;

                  '\n' /* LF (nowa linijka) */

                  '\r' /* CR (powrót karetki) */

                  '\t' /* tabulacja */

                  '\0' /* znak końca napisu */

                  '\XXX' /* znak o kodzie ASCII XXX 8-kowym */

                  '\'' /* znak ' */

                  '\"' /* znak " */

                  '\\' /* znak \ */

                  Inicjalizacja mieszana

                  Tablice

                  char C1='A',C3=66;

                  int I1=90,I2='z';

                  long L1=32L,L1=2,L3='Q';

                  double D1=12.5,D2=7,D3=12LU;

                  int TA[4]={65,66,'C',68};

                  int TC[]={65,66,'C',68}; /* Rozmiar zostanie

                  wyznaczony automatycznie */

                  int TB[6]={65,66,'C',68}; /* Pozostałe elementy

                  będą mialy wartość 0 */

                  Tablice znaków = napisy

                  Znak końca napisu

                  char AlaMaKota[]="Ala ma kota";

                  char C[6]="Cześć"; /* 6=5 + znak końca */

                  char ala[]={'A','l','a',0};

                  char ala1[]={'A','l','a','\0'};

                  char ala2[]={'A','l','a',0};

                  /* 0 oraz '\0' - to samo */

                  1. Podstawowe operacje

                    1. Operacja przypisywania

                    2. int a,b;

                      a=13;

                      b=a;

                      int a,b,c,d;

                      a=b=c=d=7;

                      int x1=1,x3,x5;

                      x5=(x3=(x1+2))+2;

                      /* x3=3; x5=5; */

                        1. Operacje arytmetyczne

                        2. int a=30,b=5,c;

                          c=a+b;

                          c=a-b;

                          c=a*b;

                          c=a/b;

                          c=a%b; /* reszta z dzielenia */

                          int a=30;

                          a+=20; /* a=a+20; */

                          a-=10; /* a=a-10; */

                          a*=3; /* a=a*3; */

                          a/=12; /* a=a/12; */

                          a%=3; /* a=a%3; */

                            1. Konwersja typów

                            2. /* Konwersja jawna jest niezbędna wtedy gdy istnieje prawdopodobieństwo utraty danych */

                              short S=5;

                              int I=6;

                              long L=7;

                              L=I; /* konwersja nie jawna */

                              L=S; /* konwersja nie jawna */

                              S=(short)I;

                              S=(short)L;

                              I=(int)L;

                              int I=5;

                              unsigned U=6;

                              long L=7;

                              L=I; /* konwersja nie jawna */

                              L=U; /* konwersja nie jawna */

                              I=(int)U;

                              U=(unsigned)I;

                              double D=5.6;

                              int I=7;

                              long L=8;

                              D=I; /* konwersja nie jawna */

                              D=L; /* konwersja nie jawna */

                              I=(int)D;

                              L=(long)D;

                                1. Dzielenie całkowitoliczbowe oraz zmiennoprzecinkowe

                                2. /* Dzielenie na liczbach całkowitych - kiedy dzielnik oraz dzielna są całkowite */

                                  /* Dzielenie na liczbach rzeczywistych - kiedy dzielnik lub dzielna są zmiennoprzecinkowe */

                                  int ai=10,bi=4;

                                  double Wynik;

                                  Wynik=ai/bi;

                                  Wynik=ai/4;

                                  Wynik=10/bi;

                                  Wynik=10/4;

                                  /* Wynik=2.0 dla każdego z przypadków*/

                                  double ad=10,bd=4;

                                  double Wynik;

                                  Wynik=ad/bd;

                                  Wynik=ad/4;

                                  Wynik=10/bd;

                                  /* Wynik=2.5 dla każdego z przypadków*/

                                  int ai=10,bi=4;

                                  double ad=10,bd=4,Wyn;

                                  Wyn=ad/bi;

                                  Wyn=ai/bd;

                                  Wyn=10.0/bi;

                                  Wyn=ai/4.0;

                                  /* Wynik=2.5 dla każdego z przypadków*/

                                  int ai=10,bi=4;

                                  double Wynik;

                                  Wynik=ai/((double)bi);

                                  Wynik=((double)ai)/bi;

                                  /* Wynik=2.5 dla każdego z przypadków*/

                                    1. Operacje relacji i logiczne

                                    2. int a=30,b=5,c;

                                      c=(a>b);

                                      c=(a<b);

                                      c=(a>=b);

                                      c=(a<=b);

                                      c=(a==b);

                                      c=(a!=b);

                                      int c,a=5,b=0;

                                      c=((0<=a)&&(a<=9)); /* i (and) */

                                      c=((1>b)||(b>9)); /* lub (or) */

                                      c=(a||b); /* c=(a!=0||b!=0) */

                                      c=(!a&&!b); /* c=(a==0||b==0) */

                                      c=(a>0)+(!b);

                                      Każda wartość arytmetyczna może być potraktowana jako wartość logiczna: 0 ► fałsz, różne od 0 ► prawda.

                                      Każda wartość logiczna może być potraktowana jako wartość arytmetyczna prawda ► 1, fałsz ► 0

                                        1. Operacje bitowe

                                        2. int a=3,b=6,c;

                                          c=a&b; /* i (and) */

                                          c=a|b; /* lub (or) */

                                          c=a^b; /* różnica symetryczna (xor) */

                                          c=~b; /* negacja (not) */

                                          c=b<<1; /* =12 */

                                          c=b>>1; /* =3 */

                                          int a=3,b=5;

                                          a&=b; /* a=a&b; */

                                          a|=b; /* a=a|b; */

                                          a^=b; /* a=a^b; */

                                          b<<=a; /* b=b<<a; b=b*2*2*2; */

                                          b>>=a; /* b=b>>a; b=b/2/2/2; */

                                            1. Operacje inkrementacji, dekrementacji

                                            2. int a=3;

                                              ++a; /* a=a+1 */

                                              a++; /* a=a+1 */

                                              --a; /* a=a-1 */

                                              a--; /* a=a-1 */

                                              int a,b=0,t[3]={1,2,3};

                                              a=2*(++b); /* b=b+1; a=2*b; */

                                              a=2*(b++); /* a=2*b; b=b+1; */

                                              a=t[--b]; /* b=b-1; a=t[b]; */

                                              a=t[b--]; /* a=t[b]; b=b-1; */

                                              ++x; --x; ► przedrostkowe

                                              (preferowane kiedy kolejność nie stanowi różnicy)

                                              x++; x--; ► przyrostkowe

                                                1. Operator trójargumentowy warunkowy

                                                2. int a=6,b=-6,c;

                                                  c=a<b?a:b; /* jeżeli a<b to wynik a, jeżeli nie to b; równoważne c = minimum a,b */

                                                  c=a>b?a:b; /* jeżeli a>b to wynik a, jeżeli nie to b; równoważne c = maksimum a,b */

                                                  c=b<0?-b:b; /* c wartość bezwzględna b */

                                                  c=a?b/a:0; /* jeżeli a==0 to c=b/a, jeżeli a!=0 to c=0;

                                                    1. Operator sizeof()

                                                    2. char C; short S int I; long L; float F; double D; long double LD; int T[5]; int Dlugosc,Logic;

                                                      Dlugosc=sizeof int; /* Dlugosc = liczba bajtów zajmowana przez dowolną zmienną typu int */

                                                      Dlugosc=sizeof(I); /* Dlugosc = liczba bajtów zajmowana przez zmienną I */

                                                      Logic=(sizeof(C)=sizeof(char)); /* Prawda */

                                                      Logic=(sizeof(I)=sizeof(int)); /* Prawda */

                                                      Logic=(sizeof(D)=sizeof(double)); /* Prawda */

                                                      Logic=(sizeof(T)==5*sizeof(int)); /* Prawda */

                                                      Logic=(sizeof(T)/sizeof(int)==5); /* Prawda */

                                                      Logic=(sizeof(T)/sizeof(T[0])==5); /* Prawda */

                                                      Logic=(sizeof(int)==sizeof(sizeof(T)/sizeof(T[0]))); /* Prawda */

                                                      Logic=(sizeof(int)==sizeof(sizeof(...))); /* Prawda, cokolwiek zamiast ... */

                                                        1. Relacje między typami zmiennych

                                                        2. Logic=(sizeof(char)==1); /* Prawda */

                                                          Logic=(sizeof(char)<sizeof(short)); /* Prawda */

                                                          Logic=(sizeof(short)<=sizeof(int)); /* Prawda */

                                                          Logic=(sizeof(int)<=sizeof(long)); /* Prawda */

                                                          Logic=(sizeof(short)<sizeof(long)); /* Prawda */

                                                          Logic=((sizeof(int)==sizeof(short))||(siseof(int)==sizeof(long))); /* Prawda */

                                                          Logic=(sizeof(float)<sizeof(double)); /* Prawda */

                                                          Logic=(sizeof(double)<=sizeof(long double)); /* Prawda */

                                                            1. Tabela priorytetów i wiązania

                                                            2. ()

                                                              []

                                                              ->

                                                              .

                                                              od lewej do prawej

                                                              !

                                                              ~

                                                              +

                                                              -

                                                              ++

                                                              --

                                                              &

                                                              *

                                                              sizeof

                                                              od prawej do lewej

                                                              *

                                                              /

                                                              %

                                                              od lewej do prawej

                                                              +

                                                              -

                                                              od lewej do prawej

                                                              <<

                                                              >>

                                                              od lewej do prawej

                                                              <

                                                              <=

                                                              >

                                                              >=

                                                              od lewej do prawej

                                                              ==

                                                              !=

                                                              od lewej do prawej

                                                              &

                                                              od lewej do prawej

                                                              ^

                                                              od lewej do prawej

                                                              |

                                                              od lewej do prawej

                                                              &&

                                                              od lewej do prawej

                                                              ||

                                                              od prawej do lewej

                                                              ?:

                                                              od lewej do prawej

                                                              =

                                                              *=

                                                              /=

                                                              %=

                                                              +=

                                                              -=

                                                              &=

                                                              ^=

                                                              |=

                                                              <<=

                                                              >>=

                                                              od prawej do lewej

                                                              ,

                                                              od lewej do prawej

                                                              1. Struktura programu

                                                                1. Prosty przykład

                                                                2. #include <stdio.h> /* Podłączenie plików nagłówkowych */

                                                                  #include <math.h>

                                                                  #define RozmiarBufora 100 /* Deklaracje preprocesora */

                                                                  double ZminnaGlobalna; /* Deklaracje zmiennych globalnych */

                                                                  int main() /* funkcja main */

                                                                  {

                                                                  long ZminnaLokalna; /* Deklaracje zmiennych lokalnych */

                                                                  printf("Mój Program\n"); /* Instrukcje funkcji main */

                                                                  return(0); /* Wartość zwracana przez program do systemu */

                                                                  }

                                                                  1. Operacje wejścia wyjścia

                                                                    1. Wymagane pliki nagłówkowe

                                                                    2. #include <stdio.h>

                                                                        1. Drukowanie na wyjście standardowe

                                                                        2. printf("Cześć!\n"); /* wydrukuje tekst zawarty w cudzysłowach; \n następny wiersz */

                                                                          int a=9; /* %d - dla zmiennych typu int */

                                                                          printf("Zmienna a ma wartość %d (ma być 9)\n",a); /* w miejsce %d wpisana będzie wartość a */

                                                                          long RozmiarPliku=123546L;

                                                                          printf("Rozmiar pliku wynosi %ld\n",RozmiarPliku); /* %ld - dla zmiennych typu long */

                                                                          float Wzrost=1.74;

                                                                          printf("Średni wzrost jest %f\n",Wzrost); /* %f - dla zmiennych typu float */

                                                                          double Odleglosc=123.456;

                                                                          printf("Odległość: %lf m.\n",Odleglosc); /* %lf - dla zmiennych typu double */

                                                                          int a=10,b=30; /* %% - zostanie wydrukowane jako % */

                                                                          printf("%d stanowi %.2lg%% wartosci %d\n",a,100.*a/b,b); /* 2 znaki po przecinku */

                                                                          int a=3,b=5; /* wydruk w polu o określonej szerokości */

                                                                          printf(" a\t b\n%4d\t%4d\n",a,b);

                                                                          a b

                                                                          3 5

                                                                          char W='>',M='<'; int a=4,b=5; /* %c - dla zmiennych typu char */

                                                                          printf("%d%c%d\n",a,a<b?M:W,b); /* UWAGA: jeżeli a==b również wypisze: a>b */

                                                                          int a=3,b=5; char W[]="wieksze od",M[]="mniejsze od",R[]="równe";

                                                                          printf("%d %s %d\n",a,a==b?R:(a<b?M:W),b); /* %s - dla napisów */

                                                                          double T[4]={4,3,2,1}; int i=2;

                                                                          printf("T[4]={%lg,%lg,%lg,%lg};\n",T[0],T[1],T[2],T[3]);

                                                                          printf("T[%d]=%lg;\n",i,T[i]);

                                                                            1. Wprowadzanie z wejścia standardowego

                                                                            2. int a;

                                                                              scanf("%d",&a); /* %d dla int; jak na razie magiczny znaczek & */

                                                                              long a;

                                                                              scanf("%ld",&a); /*%ld dla long; jak na razie magiczny znaczek & */

                                                                              float a;

                                                                              scanf("%f",&a); /*%f dla float; jak na razie magiczny znaczek & */

                                                                              double a;

                                                                              scanf("%lf",&a); /*%lf dla double; jak na razie magiczny znaczek & */

                                                                              char a;

                                                                              scanf("%c",&a); /*%c dla char; jak na razie magiczny znaczek & */

                                                                              char a[10];

                                                                              scanf("%s",a); /*%s dla napisów; UWAGA!!! Bez magicznego znaczka & */

                                                                              /* będzie poważny problem w przypadku gdy użytkownik wprowadzi więcej niż 9 znaków */

                                                                              /* Nie należy stosować takiej konstrukcji */

                                                                              fgets(a,10,stdin); /* zrobi prawie to samo co scanf, ale bezpiecznie */

                                                                              int a; long b; double c; /* przy wprowadzaniu należy oddzielając wartości */

                                                                              scanf("%d%ld%lf",&a,%b,&c); /* spacją lub klawiszem <Enter> */

                                                                              double x,y; /* przy wprowadzaniu należy oddzielając wartości */

                                                                              printf("wprowadź współrzędne x,y: "); /* przecinkiem np.: 2.5,17.3 */

                                                                              scanf("%lf,%lf",&x,&y);

                                                                              int Licznik,Mianownik; /* przy wprowadzaniu oddzielając wartości */

                                                                              printf("wprowadź ułamek: "); /* znakiem / np.: 2/3 */

                                                                              scanf("%d/%d",&Licznik,&Mianownik);

                                                                                1. Tabelka formatów dla różnych typów

                                                                                2. int %d

                                                                                  unsigned %u

                                                                                  long %ld

                                                                                  unsigned long %lu

                                                                                  float %f

                                                                                  double %lf,%le,%lg; %le - w postaci naukowej, %lg - krótsza z naukowej i normalnej

                                                                                  char %c

                                                                                  napis %s

                                                                                  1. Instrukcje podstawowe

                                                                                    1. Instrukcja if else

                                                                                    2. int a=3,b=5; if(a<b) printf("%d<%d\n",a,b);

                                                                                      zostanie wydrukowane a<b

                                                                                      int a=3,b=5,c=0;

                                                                                      if(a<b)

                                                                                      {

                                                                                      c=a;

                                                                                      printf("Najmniejsza wartość to %d\n",c);

                                                                                      }

                                                                                      konstrukcja if zawiera więcej niż jedną instrukcje, muszą być nawiasy klamrowe

                                                                                      int a,b; printf("Podaj wartości a,b: "); scanf("%d,%d",&a,&b);

                                                                                      if(a<b) printf("%d<%d\n",a,b);

                                                                                      else printf("%d>=%d\n,a,b);

                                                                                      else -> w przeciwnym wypadku

                                                                                      int a,b; printf("Podaj wartości a,b: "); scanf("%d,%d",&a,&b);

                                                                                      if(a<b) printf("Najmniejsza wartość to a=%d\n",a);

                                                                                      else

                                                                                      {

                                                                                      a=b;

                                                                                      printf("Najmniejsza wartość to b=%d\n",b);

                                                                                      }

                                                                                      else zawiera więcej niż jedną instrukcje, muszą być nawiasy klamrowe

                                                                                      int a; printf("Podaj wartośc a: "); scanf("%d",&a);

                                                                                      printf("Wartość a(%d) jest ",a);

                                                                                      if(a&1) { a=(a+1)>>1; printf("nieparzysta\n"); }

                                                                                      else { a>>=1; printf("parzysta\n"); }

                                                                                      printf("Zaokrąglona połowa wartości wynosi %d\n",a);

                                                                                      if oraz else zawierają więcej niż jedną instrukcje, muszą być nawiasy klamrowe

                                                                                      int a,b,c,t;

                                                                                      printf("Podaj wartości a,b,c: "); scanf("%d,%d",&a,&b,&c);

                                                                                      if(a>b) { t=a; a=b; b=t; }

                                                                                      if(a>c) { t=a; a=c; c=t; }

                                                                                      if(b>c) { t=b; b=c; c=t; }

                                                                                      printf("Posortowane a,b,c: %d,%d,%d\n",a,b,c);

                                                                                      szereg warunków

                                                                                      int Liczba;

                                                                                      printf("Podaj dodatnia liczbe całkowitą: ");

                                                                                      scanf("%d",&Liczba);

                                                                                      if(Liczba<0) printf("Liczba ujemna\n");

                                                                                      else if(Liczba==0) printf("Zero\n");

                                                                                      else if(Liczba<10) printf("Cyfra\n");

                                                                                      else printf(":-) Właśnie o to chodziło\n");

                                                                                      kaskada warunków

                                                                                        1. Instrukcja while (break,continue)

                                                                                        2. double c; printf("Podaj liczbe zmiennoprzecinkowa: "); scanf("%lf",&c);

                                                                                          while(c>0) printf("Kolejny pierwiastek %lg\n",c=sqrt(c));

                                                                                          long a; int f=1;

                                                                                          while(f) /* więcej niż jedną instrukcja, muszą być nawiasy klamrowe */

                                                                                          {

                                                                                          printf("Podaj liczbe całkowitą (0-koniec): "); scanf("%ld",&a);

                                                                                          if(a)

                                                                                          {

                                                                                          if(a<0) printf("Wartość %ld<0\n",a);

                                                                                          else printf("Wartość %ld>0\n",a);

                                                                                          }

                                                                                          else { printf("Wprowadzono zero. (Koniec zabawy)\n"); f=0; }

                                                                                          }

                                                                                          int a;

                                                                                          while(1) /* dopóki prawda, pętla nieskończona */

                                                                                          {

                                                                                          printf("Podaj wartość całkowitą dodatnią (0-koniec): "); scanf("%d",&a);

                                                                                          if(a==0) break; /* przerywa działanie pętli natychmiast */

                                                                                          if(a<0) continue; /* przeskakuje do sprawdzenia warunku */

                                                                                          printf("Podałeś wartość %d\n",a);

                                                                                          }

                                                                                            1. Instrukcja for (break,continue)

                                                                                            2. int i; for(i=0;i<10;++i) printf("%d",i); /* Wydruk: 0,1,2,3,4,5,6,7,8,9 */

                                                                                              int i; for(i=9;i>=0;--i) printf("%d",i); /* Wydruk: 9,8,7,6,5,4,3,2,1,0 */

                                                                                              int N;

                                                                                              printf("Wprowadź liczbe całkowitą dodatnią: "); scanf("%d",&N);

                                                                                              for(;N;N>>=1) printf("%c",'0'+(N&1)); /* brak instrukcji początkowej */

                                                                                              int a;

                                                                                              for(;;) /* brak instrukcji początkowej, instrukcji krokowej oraz warunku pętla nieskończona */

                                                                                              {
                                                                                              printf("Podaj wartość całkowitą dodatnią (0-koniec): "); scanf("%d",&a);

                                                                                              if(a==0) break; /* przerywa działanie pętli natychmiast */

                                                                                              if(a<0) continue; /* przeskakuje do sprawdzenia warunku */

                                                                                              printf("Podałeś wartość %d\n",a);

                                                                                              }

                                                                                              char Pomocnicza,Tekst[]="kobyła ma mały bok";

                                                                                              int p,k;

                                                                                              for(p=0,k=sizeof(Tekst)-2;p<k;++p,--k) /* kilka instrukcji początkowych oraz krokowych */

                                                                                              {

                                                                                              Pomocnicza=Tekst[p]; Tekst[p]=Tekst[k]; Tekst[k]=Pomocnicza;

                                                                                              }

                                                                                              printf("%s\n",Tekst);

                                                                                              1. Funkcje

                                                                                                1. Deklaracja(prototyp) / definicja

                                                                                                2. void PrintLogic(int Logic) /* Definicja powyżej miejsca wywołania, pełni rolę deklaracji */

                                                                                                  {

                                                                                                  printf("%s\n",Logic?"Prawda":"Fałsz");
                                                                                                  }

                                                                                                  int main()

                                                                                                  {

                                                                                                  PrintLogic(2<3); PrintLogic(2*2==5); /* Miejsce wywołania */

                                                                                                  return(0);

                                                                                                  }

                                                                                                  void PrintLogic(int); /* Deklaracja, UWAGA !!! średnik musi być koniecznie */

                                                                                                  int main()

                                                                                                  {

                                                                                                  PrintLogic(sizeof(int)>=sizeof(short)); /* Miejsce wywołania */

                                                                                                  PrintLogic(sizeof(short)==sizeof(long)); /* Miejsce wywołania */

                                                                                                  return(0);

                                                                                                  }

                                                                                                  void PrintLogic(int Logic) /* Definicja */

                                                                                                  {

                                                                                                  printf("%s\n",Logic?"Prawda":"Fałsz");
                                                                                                  }

                                                                                                    1. Wartości przekazywane, zwracane przez funkcje

                                                                                                    2. double Min(double,double); /* Deklaracja */

                                                                                                      int main()

                                                                                                      {

                                                                                                      double C;

                                                                                                      C=Min(3,1.7);

                                                                                                      printf("%lg\n",Min(C,2));

                                                                                                      return(0);

                                                                                                      }

                                                                                                      double Min(double A,double B) { return(A<B?A:B); }

                                                                                                      int CzyCyfra(char C) { return(('0'<=C)&&(C<='9')); }

                                                                                                      int main()

                                                                                                      {

                                                                                                      int x;

                                                                                                      x=CzyCyfra('A');

                                                                                                      printf("%s\n",CzyCyfra('0')?"Prawda":"Fałsz");

                                                                                                      return(0);

                                                                                                      }

                                                                                                      double Pitagoras(long X,long Y);

                                                                                                      int main()

                                                                                                      {

                                                                                                      long Ax,Ay,Bx,By;

                                                                                                      printf("Podaj współrzędne punktu A: "); scanf("%lf,%lf",&Ax,&Ay);

                                                                                                      printf("Podaj współrzędne punktu B: "); scanf("%lf,%lf",&Bx,&By);

                                                                                                      printf("Odległość pomiędzy A i B wynosi %lg\n",Pitagoras(Bx-Ax,By-Ay));

                                                                                                      return(0);

                                                                                                      }

                                                                                                      double Pitagoras(long X,long Y) { return(sqrt(X*X+Y*Y)); }

                                                                                                        1. Parametry formalne są kopią

                                                                                                        2. void ErrorSwap(double,double); /* Deklaracja */

                                                                                                          int main()

                                                                                                          {

                                                                                                          double X1=1,X2=2;

                                                                                                          ErrorSwap(X1,X2);

                                                                                                          printf("X1=%lg; X2=%lg;\n",X1,X2); /* Nadal X1=1; X2=2; */

                                                                                                          return(0);

                                                                                                          }

                                                                                                          void ErrorSwap(double A,double B)

                                                                                                          {

                                                                                                          double X;

                                                                                                          X=A; A=B; B=X;

                                                                                                          }

                                                                                                          1. Wskaźniki

                                                                                                            1. Operacje na wskaźnikach

                                                                                                            2. char T[]="Ala ma kota";

                                                                                                              char *W; /* Wskaźnik do char, nie zainicjalizowany ma wartość przypadkową */

                                                                                                              W=T; printf("%s\n",W); /* Wydruk: Ala ma kota */

                                                                                                              W=T+4; printf("%s\n",W); /* Wydruk: ma kota */

                                                                                                              printf("%s\n",T+4); /* Tabela jest wskaźnikiem, Wydruk: ma kota */

                                                                                                              printf("%c%c\n",W[0],W[1]); /* Wskaźnik jest tabelą, Wydruk: ma */

                                                                                                              int Tab[]={55,44,33,22,11};

                                                                                                              int *P,Pom,*K; /* Deklaracja kilku wskaźników, UWAGA zmienna Pom nie jest wskaźnikiem */

                                                                                                              for(P=Tab,K=Tab+4;P<K;++P,--K) { (*P)=(*K); } /* znak * przed wskaźnikiem => zawartość */

                                                                                                              /* K=Tab+4, oznacza ustaw K na 4-y element Tab, nie zaś numer komórki plus 4 */

                                                                                                              /* ++P, oznacza przesun P do następnego elementu, nie zaś powiększ P o 1 */

                                                                                                              /* --K, oznacza przesun K do poprzedniego elementu, nie zaś pomniejsz K o 1 */

                                                                                                              double Td[]={1.1,2.2,3.3,4.4}; double *Wd; int i;

                                                                                                              Wd=Td-1; /* Poprzedni element Td, Wd można traktować jako tablice z indeksami od 1 */

                                                                                                              for(i=1;i<=4;++i) printf("Wd[%d]=%lg;\n",i,Wd[i]);

                                                                                                                1. Napis jest wskaźnikiem

                                                                                                                2. char Ala1[]={'A','l','a',' ','m','a',' ','k','o','t','a',0};

                                                                                                                  char Ala2[]="Ala ma kota";

                                                                                                                  char *Ala3={'A','l','a',' ','m','a',' ','k','o','t','a',0};

                                                                                                                  char *Ala4="Ala ma kota";

                                                                                                                  printf("%c%c%c\n",Ala1[0],Ala1[1],Ala1[2]);

                                                                                                                  printf("%c%c%c\n",Ala2[0],Ala2[1],Ala2[2]);

                                                                                                                  printf("%c%c%c\n",Ala3[0],Ala3[1],Ala3[2]); /* Ala3 jest tablicą */

                                                                                                                  printf("%c%c%c\n",Ala4[0],Ala4[1],Ala4[2]); /* Ala4 jest tablicą */

                                                                                                                  /* --Ala1; */ /* Błąd!!! Ala1 jest też stałą wskaźnikową */

                                                                                                                  /* --Ala2; */ /* Błąd!!! Ala2 jest też stałą wskaźnikową */

                                                                                                                  --Ala3; /* Ala3 jest też zmienną wskaźnikową */

                                                                                                                  ++Ala4; /* Ala3 jest też zmienną wskaźnikową */

                                                                                                                    1. Przydatne funkcje biblioteczne

                                                                                                                    2. #include <string.h>

                                                                                                                      char Ala[]="Ala"; /*strlen(Ala)!=sizeof(Ala)*/

                                                                                                                      printf("Tablica Ala[%d] ma długość %d\n",sizeof(Ala),strlen(Ala));

                                                                                                                      char Pom[20],*Kot="kot"; /* Należy pilnować rozmiary */

                                                                                                                      strcpy(Pom,Kot); printf("%s\n",Pom);

                                                                                                                      char S1[]="Ala",S2[]="ma",S3[]="kota",S[]=" ",Pom[sizeof(S1)+sizeof(S2)+sizeof(S3)];

                                                                                                                      strcpy(Pom,S1); strcat(Pom,S);

                                                                                                                      strcat(strcat(strcat(Pom,S2),S),S3);

                                                                                                                      printf("%s\n",Pom);

                                                                                                                      char Ala[]="Ala ma kota",Pies[]="psa";

                                                                                                                      strcpy(strchr(Ala,'k'),Pies);

                                                                                                                      printf("%s\n",Ala); /* na wydruku: Ala ma psa */

                                                                                                                      char PolskieZnaczki[]="ĄĆĘŁŃÓŚŻŹąćęłńóśżź";

                                                                                                                      char Znak;

                                                                                                                      scanf("%c",&Znak);

                                                                                                                      if(strchr(PolskieZnaczki,Znak)) printf("Wprowadzono Polski Znaczek\n");

                                                                                                                      char K[]="Ala ma kota",P[]="Ala ma psa";

                                                                                                                      int Porownanie;

                                                                                                                      Porownanie=strcmp(K,P); /* ==0, <0, >0 => wynik = leksykograficzne odejmowanie */

                                                                                                                      if(!Porownanie) printf("Napisy K i P są identyczne\n");

                                                                                                                      else

                                                                                                                      {

                                                                                                                      if(Porownanie<0) printf("Napis K jest leksykograficznie mniejszy od P\n");

                                                                                                                      else printf("Napis K jest leksykograficznie większy od P\n");

                                                                                                                      }

                                                                                                                      char AlaMaKota[]="Ala ma kota",Ewa[]="Ewa";

                                                                                                                      memcpy(AlaMaKota,Ewa,strlen(Ewa));

                                                                                                                      printf("%s\n",AlaMaKota); /* na wydruku: Ewa ma kota */

                                                                                                                      int T1[5],T2[]={1,2,3,4};

                                                                                                                      memcpy(T1,T2,sizeof(T2)); /* 5-yj element T1 zostanie nie zmieniony */

                                                                                                                      char AlaMaKota[]="Ala ma kota",EwaMaPsa[]="Ewa ma psa";

                                                                                                                      if(memcmp(AlaMaKota,EwaMaPsa,3)) printf("Pierwsze 3 litery są rożne\n");

                                                                                                                      if(!memcmp(AlaMaKota+2,EwaMaPsa+2,5) printf("5 liter 2-go znaku (\"a ma \") za identyczne\n");

                                                                                                                      long Tablica[20];

                                                                                                                      memset(Tablica,0,10*sizeof(long)); /* wypełni zerami pierwsze 10 elementów */

                                                                                                                      /* Wiekszość funkcji napisowych posiada tez wersje z dodatkowym parametrem określającym maksymalną liczbe znaków biorącą udziął w operacji, np. strcpy() -> strncpy() */

                                                                                                                        1. Magiczny znaczek & przy użyciu scanf()

                                                                                                                        2. int x,*w;

                                                                                                                          w=&x; /* &x => jest wskaźnikiem do obszaru w którym zaczyna się x */

                                                                                                                          scanf("%d",w);

                                                                                                                          int A=3,B=1,*w;

                                                                                                                          w=&A;

                                                                                                                          memcpy(w,&B,sizeof(int)); /* skopiuje zawartość B do A */

                                                                                                                          long L; double D;

                                                                                                                          printf("Adres L=%p; Adres D=%p\n",&L,&D); /* wydruk adresów zmiennych */

                                                                                                                            1. Przekazywanie wskaźników do funkcji

                                                                                                                            2. void Swap(int *A,int *B) { int X; X=*A; *A=*B; *B=X; }

                                                                                                                              int main()

                                                                                                                              {

                                                                                                                              int X=3,Y=5;

                                                                                                                              Swap(&X,&Y); /* zamiana wartości X z Y */

                                                                                                                              printf("X=%d; Y=%d;\n",X,Y);

                                                                                                                              return(0);
                                                                                                                              }

                                                                                                                              void WydrukInt(char *Tekst,int X) printf("%s=%d;\n",Tekst,X);

                                                                                                                              int main()

                                                                                                                              {

                                                                                                                              int X=1,Y=100;

                                                                                                                              WydrukInt("X",X);

                                                                                                                              WydrukInt("Y",Y);

                                                                                                                              WydrukInt("X*Y",X*Y);

                                                                                                                              WydrukInt("Suma kwadratów X,Y",X*X+Y*Y);

                                                                                                                              return(0);
                                                                                                                              }

                                                                                                                              void WprowadzWspolrzedne(char *Tekst,double *X,double *Y)

                                                                                                                              {

                                                                                                                              while(1)

                                                                                                                              {

                                                                                                                              printf("%s: ",Tekst);

                                                                                                                              fflush(stdin);

                                                                                                                              if((scanf("%lf,%lf",X,Y)==2)&&(getchar()=='\n')) return; /* X,Y bez znaczka & */

                                                                                                                              printf("Błąd wprowadzenia. Powtórz\n");

                                                                                                                              }

                                                                                                                              }

                                                                                                                              int main()

                                                                                                                              {

                                                                                                                              double Ax,Ay,Bx,By;

                                                                                                                              WprowadzWspolrzedne("Podaj współrzędne punktu A",&Ax,&Ay);

                                                                                                                              WprowadzWspolrzedne("Podaj współrzędne punktu B",&Bx,&By);

                                                                                                                              printf("Odleglosc od A do B %lf\n",sqrt((Bx-Ax)*(Bx-Ax)+(By-Ay)*(By-Ay));

                                                                                                                              return(0);

                                                                                                                              }

                                                                                                                              void WydrukujTabele(double *T,int Rozmiar)

                                                                                                                              {

                                                                                                                              int i;

                                                                                                                              printf("{");

                                                                                                                              for(i=0;i<Rozmiar;++i)

                                                                                                                              {

                                                                                                                              if(i) printf(",");

                                                                                                                              printf("%lg",T[i]);

                                                                                                                              }

                                                                                                                              printf("}\n");

                                                                                                                              }

                                                                                                                              int main()

                                                                                                                              {

                                                                                                                              double Tab[]={1.1,2.2,3.3,4.4};

                                                                                                                              WydrukujTabele(Tab,sizeof(Tab)/sizeof(*Tab));

                                                                                                                              return(0);

                                                                                                                              }

                                                                                                                              void Pisz1(char *Znaki,int Ile) { int i; for(i=0;i<Ile,++i) printf("%c",Znaki[i]); }

                                                                                                                              void Pisz2(char *Znaki,int Ile) { int i; for(i=0;i<Ile,++i) printf("%c",*(Znaki+i)); }

                                                                                                                              void Pisz3(char Znaki[],int Ile) { int i; for(i=0;i<Ile,++i) printf("%c",Znaki[i]); }

                                                                                                                              void Pisz4(char Znaki[],int Ile) { int i; for(i=0;i<Ile,++i) printf("%c",*(Znaki+i)); }

                                                                                                                              void Pisz5(char Znaki[],int Ile) /* Ciekawostka!!! Prawie nie stosowana!!! */

                                                                                                                              {

                                                                                                                              int i; /* dowiedziałem się o takiej możliwości */

                                                                                                                              for(i=0;i<Ile,++i) printf("%c",i[Znaki]); /* dopiero po 20 latach praktyki */

                                                                                                                              }

                                                                                                                              1. Instrukcje dodatkowe

                                                                                                                                1. Instrukcja switch()

                                                                                                                                2. char op;

                                                                                                                                  double X,Y;

                                                                                                                                  printf("Podaj dzialanie do wykonania (np. 3*6): "); scanf("%lf%c%lf",&X,&op,&Y);

                                                                                                                                  printf("%lg%c%lg=",X,op,Y);

                                                                                                                                  switch(op)

                                                                                                                                  {

                                                                                                                                  default: printf("Nieznana operacja wykonam dodawanie\n");

                                                                                                                                  printf("%lg+%lg=",X,Y);

                                                                                                                                  case '+': printf("%lg",X+Y); break;

                                                                                                                                  case '-': printf("%lg",X-Y); break;

                                                                                                                                  case '*': printf("%lg",X*Y); break;

                                                                                                                                  case '%': printf("Niedostępna operacja wykonam dzielenie\n");

                                                                                                                                  printf("%lg/%lg=",X,Y);

                                                                                                                                  case '/': printf("%lg",X/Y); break;

                                                                                                                                  }

                                                                                                                                  printf("\n");

                                                                                                                                    1. Instrukcja do { } while()

                                                                                                                                    2. char T[]="1010",P[sizeof(T)];

                                                                                                                                      int i;

                                                                                                                                      memcpy(P,T,sizeof(P));

                                                                                                                                      do /* Rzadko stosowana, zawsze ma nawiasy klamrowe */

                                                                                                                                      {

                                                                                                                                      for(i=sizeof(P)-2;i>=0;--i)

                                                                                                                                      {

                                                                                                                                      if(P[i]=='1') { P[i]='0'; break; }

                                                                                                                                      P[i]='1';

                                                                                                                                      }

                                                                                                                                      printf("%s\n",P);

                                                                                                                                      }while(memcmp(P,T,sizeof(P)));

                                                                                                                                        1. Instrukcja goto

                                                                                                                                        2. /* Użycie tej instrukcji w C, to przestępstwo */

                                                                                                                                          /* Nie należy stosować pod żadnym pozorem */

                                                                                                                                          int main()

                                                                                                                                          {

                                                                                                                                          double d;

                                                                                                                                          Start:

                                                                                                                                          printf("Podaj wartość dodatnią: "); scanf("%lf",&d);

                                                                                                                                          if(d<0) goto Start;

                                                                                                                                          printf("Pierwiastek z %lg wynosi %lg\n",d,sqrt(d));

                                                                                                                                          }

                                                                                                                                          1. Struktury

                                                                                                                                            1. Deklaracja struktur

                                                                                                                                            2. struct Punkt

                                                                                                                                              {

                                                                                                                                              double X;

                                                                                                                                              double Y;

                                                                                                                                              }; /* średnik po zamkniętym nawiasie !!! */

                                                                                                                                              int main()

                                                                                                                                              {

                                                                                                                                              struct Punkt A;

                                                                                                                                              double Odl;

                                                                                                                                              printf("Podaj współrzędne punktu A: "); scanf("%lf,%lf",&A.x,&A.y);

                                                                                                                                              Odl=sqrt(A.x*A.x+A.y*A.y);

                                                                                                                                              printf("Wprowadzono Punkt (%lg,%lg) odległość od (0,0) wynosi %lg\n",A.x,A.y,Odl);

                                                                                                                                              return(0);

                                                                                                                                              }

                                                                                                                                              typedef struct { double X,Y; }Punkt;

                                                                                                                                              int main()

                                                                                                                                              {

                                                                                                                                              Punkt A;

                                                                                                                                              return(0);

                                                                                                                                              }

                                                                                                                                                1. Wskaźniki do struktur

                                                                                                                                                2. typedef struct { double x,y; }Punkt;

                                                                                                                                                  typedef struct { Punkt A,B; }Prostokat;

                                                                                                                                                  int main()

                                                                                                                                                  {

                                                                                                                                                  Prostokat P;

                                                                                                                                                  Punkt *wP;

                                                                                                                                                  wP=&P.A; printf("Podaj lewy-górny róg: "); scanf("%lf,%lf",&(wP->x),&(wP->y));

                                                                                                                                                  wP=&P.B; printf("Podaj prawy-dolny róg: "); scanf("%lf,%lf",&(wP->x),&(wP->y));

                                                                                                                                                  printf("(%lg,%lg)-(%lg,%lg)\n",P.A.x,P.A.y,P.B.x,P.B.y);

                                                                                                                                                  return(0);

                                                                                                                                                  }

                                                                                                                                                    1. Przekazywanie struktur do funkcji

                                                                                                                                                    2. typedef struct { double x,y; }Punkt;

                                                                                                                                                      typedef struct { Punkt A,B; }Prostokat;

                                                                                                                                                      void WprowadzPunkt(char *Tekst,Punkt *A)

                                                                                                                                                      {

                                                                                                                                                      printf("%s: ",Tekst);

                                                                                                                                                      scanf("%lf,%lf",&(A->x),&(A->y));

                                                                                                                                                      }

                                                                                                                                                      void WprowadzProstokat(char *Tekst,Prostokat *P)

                                                                                                                                                      {

                                                                                                                                                      printf("%s\n",Tekst);

                                                                                                                                                      WprowadzPunkt("Lewy-Górny róg",&(P->A));

                                                                                                                                                      WprowadzPunkt("Prawy-Dolny róg",&(P->B));

                                                                                                                                                      }

                                                                                                                                                      void DrukujPunkt(Punkt A) { printf("(%lg,%lg)",A.x,A.y); }

                                                                                                                                                      void DrukujProstokat(Prostokat P) { DrukujPunkt(P.A); printf("-"); DrukujPunkt(P.B); }

                                                                                                                                                      double Przekatna(double dx,double dy) { return(sqrt(dx*dx+dy*dy)); }

                                                                                                                                                      int main()

                                                                                                                                                      {

                                                                                                                                                      Prostokat Pr;

                                                                                                                                                      WprowadzProstokat("Wprowadz prostokąt",&Pr);

                                                                                                                                                      printf("Przekątna prostokąta "); DrukujProstokat(Pr);

                                                                                                                                                      printf(" wynosi %lg\n",Przekatna(Pr.B.x-Pr.A.x,Pr.B.y-Pr.A.y));

                                                                                                                                                      return(0);

                                                                                                                                                      }

                                                                                                                                                      1. Dynamiczne przydzielanie pamięci

                                                                                                                                                        1. Tablice

                                                                                                                                                        2. int Wiersz[]={2,3,4},Kolumna[]={5,6,7};

                                                                                                                                                          int *Iloczyn,w,k,i;

                                                                                                                                                          Iloczyn=(int*)malloc(sizeof(Wiersz)*sizeof(Kolumna));

                                                                                                                                                          if(Iloczyn) /* będzie == NULL w przypadku braku wolnej pamięci */

                                                                                                                                                          {

                                                                                                                                                          for(i=w=0;w<sizeof(Wiersz)/sizeof(int);++w)

                                                                                                                                                          {

                                                                                                                                                          for(k=0;k<sizeof(Kolumna)/sizeof(int);++k)

                                                                                                                                                          {

                                                                                                                                                          Iloczyn[i++]=Wiersz[w]*Kolumna[k];

                                                                                                                                                          }

                                                                                                                                                          }

                                                                                                                                                          }

                                                                                                                                                          for(w=0;w<sizeof(Wiersz)/sizeof(int);++w)

                                                                                                                                                          {

                                                                                                                                                          for(k=0;k<sizeof(Kolumna)/sizeof(int);++k)

                                                                                                                                                          {

                                                                                                                                                          if(k) printf("\t");

                                                                                                                                                          printf("%d",Iloczyn[w*sizeof(Kolumna)/sizeof(int)+k]);

                                                                                                                                                          }

                                                                                                                                                          printf("\n");

                                                                                                                                                          }

                                                                                                                                                          free(Iloczyn);

                                                                                                                                                          char Bufor[16];

                                                                                                                                                          double *Tablica=NULL;

                                                                                                                                                          int i,Rozmiar=0;

                                                                                                                                                          while(1)

                                                                                                                                                          {

                                                                                                                                                          printf("Podaj element nr %d : ",Rozmiar+1);

                                                                                                                                                          fflush(stdin);

                                                                                                                                                          fgets(Bufor,16,stdin);

                                                                                                                                                          if(strlen(Bufor)<2) break;

                                                                                                                                                          if(!Rozmiar) Tablica=(double*)malloc(sizeof(double));

                                                                                                                                                          else Tablica=(double*)realloc(Tablica,(Rozmiar+1)*sizeof(double));

                                                                                                                                                          Tablica[Rozmiar++]=atof(Bufor);

                                                                                                                                                          }

                                                                                                                                                          printf("Wprowadzono %d elementów:\n",Rozmiar);

                                                                                                                                                          for(i=0;i<Rozmiar;++i) printf("%d: %lg\n",i+1,Tablica[i]);

                                                                                                                                                          free(Tablica);

                                                                                                                                                          long *Tabela;

                                                                                                                                                          Tabela=(long*)calloc(30,sizeof(long));

                                                                                                                                                          /* calloc wypełnia przydzieloną pamięć zerami */

                                                                                                                                                          free(Tabela);

                                                                                                                                                            1. Napisy

                                                                                                                                                            2. char *Lista[4],Bufor[256];

                                                                                                                                                              int i;

                                                                                                                                                              printf("Wprowadz 4 wierszy:\n");

                                                                                                                                                              for(i=0;i<4;++i)

                                                                                                                                                              {

                                                                                                                                                              fgets(Bufor,256,stdin);

                                                                                                                                                              Lista[i]=strdup(Bufor); /* strlen, malloc, memcpy */

                                                                                                                                                              }

                                                                                                                                                              for(i=4-1;i>=0;--i)

                                                                                                                                                              {

                                                                                                                                                              printf(Lista[i]);

                                                                                                                                                              free(Lista[i]);

                                                                                                                                                              }

                                                                                                                                                                1. Struktury

                                                                                                                                                                2. typedef struct { double x,y; }Punkt;

                                                                                                                                                                  Punkt *WprowadzPunkt(char *Tekst,int Nr)

                                                                                                                                                                  {

                                                                                                                                                                  Punkt *Punkt;

                                                                                                                                                                  printf(Tekst,Nr);

                                                                                                                                                                  printf(": ");

                                                                                                                                                                  Punkt=(Punkt*)malloc(sizeof(Punkt));

                                                                                                                                                                  scanf("%lf,%lf",&(Punkt->x),&(Punkt->y));

                                                                                                                                                                  return(Punkt);

                                                                                                                                                                  }

                                                                                                                                                                  void DrukujPunkt(Punkt A) { printf("(%lg,%lg)",A.x,A.y); }

                                                                                                                                                                  int main()

                                                                                                                                                                  {

                                                                                                                                                                  Punkt **Punkty=NULL;

                                                                                                                                                                  int i,N;

                                                                                                                                                                  printf("Podaj ilość punktów: "); scanf("%d",&N);

                                                                                                                                                                  for(i=0;i<N;++i)

                                                                                                                                                                  {

                                                                                                                                                                  if(!i) Punkty=(Punkt**)malloc(sizeof(Punkt*));

                                                                                                                                                                  else Punkty=(Punkt**)realloc(Punkty,(i+1)*sizeof(Punkt*));

                                                                                                                                                                  Punkty[i]=WprowadzPunkt("Podaj współrzędne %d-ego punktu",i+1);

                                                                                                                                                                  }

                                                                                                                                                                  for(i=N-1;i>=0;--i)

                                                                                                                                                                  {

                                                                                                                                                                  printf("Punkt[%d]=",i+1);

                                                                                                                                                                  DrukujPunkt(*(Punkty[i])); /* Punkty[i] -> wskaźnik; *(Punkty[i]) -> i-yj punkt */

                                                                                                                                                                  printf("\n");

                                                                                                                                                                  free(Punkty[i]);

                                                                                                                                                                  }

                                                                                                                                                                  if(N>0) free(Punkty);

                                                                                                                                                                  return(0);

                                                                                                                                                                  }

                                                                                                                                                                  1. Praca z plikami

                                                                                                                                                                    1. Tryb tekstowy

                                                                                                                                                                    2. FILE *f;

                                                                                                                                                                      long Tbl1[]={111,222,333,444,555,666,777,888};

                                                                                                                                                                      long Tbl2[sizeof(Tbl1)/sizeof(long)];

                                                                                                                                                                      int i;

                                                                                                                                                                      /* Zapis */

                                                                                                                                                                      f=fopen("Dane.txt","wt+");

                                                                                                                                                                      for(i=0;i<sizeof(Tbl1)/sizeof(long);++i) fprintf(f,"%ld\n",Tbl1[i]);

                                                                                                                                                                      fclose(f);

                                                                                                                                                                      /* Odczyt */

                                                                                                                                                                      f=fopen("Dane.txt","rt+");

                                                                                                                                                                      for(i=0;i<sizeof(Tbl2)/sizeof(long);++i) fscanf(f,"%ld",Tbl2+i);

                                                                                                                                                                      fclose(f);

                                                                                                                                                                        1. Tryb binarny

                                                                                                                                                                        2. FILE *f;

                                                                                                                                                                          long Tbl1[]={111,222,333,444,555,666,777,888};

                                                                                                                                                                          long Tbl2[8];

                                                                                                                                                                          /* Zapis */

                                                                                                                                                                          f=fopen("Dane.txt","wb+");

                                                                                                                                                                          fwrite(Tbl1,sizeof(long),8,f);

                                                                                                                                                                          fclose(f);

                                                                                                                                                                          /* Odczyt */

                                                                                                                                                                          f=fopen("Dane.txt","rb+");

                                                                                                                                                                          fread(Tbl2,sizeof(long),8,f);

                                                                                                                                                                          fclose(f);

                                                                                                                                                                            1. Napisy zapis / odczyt statyczny

                                                                                                                                                                            2. FILE *f;

                                                                                                                                                                              char Napis1[]="Ala ma kota";

                                                                                                                                                                              char Napis2[100];

                                                                                                                                                                              /* Zapis */

                                                                                                                                                                              f=fopen("Dane.txt","wb+");

                                                                                                                                                                              fwrite(Napis1,1,100,f);

                                                                                                                                                                              fclose(f);

                                                                                                                                                                              /* Odczyt, jeżeli długość napisu przekroczy 99 znaków będzie poważny problem */

                                                                                                                                                                              f=fopen("Dane.txt","rb+");

                                                                                                                                                                              fread(Napis2,1,100,f);

                                                                                                                                                                              fclose(f);

                                                                                                                                                                                1. Napisy zapis / odczyt dynamiczny

                                                                                                                                                                                2. FILE *f;

                                                                                                                                                                                  char Napis1[]="Ala ma kota";

                                                                                                                                                                                  char *Napis2;

                                                                                                                                                                                  int Dlugosc;

                                                                                                                                                                                  /* Zapis */

                                                                                                                                                                                  f=fopen("Dane.txt","wb+");

                                                                                                                                                                                  Dlugosc=strlen(Napis1);

                                                                                                                                                                                  fwrite(&Dlugosc,sizeof(int),1,f);

                                                                                                                                                                                  fwrite(Napis1,1,Dlugosc,f);

                                                                                                                                                                                  fclose(f);

                                                                                                                                                                                  /* Odczyt */

                                                                                                                                                                                  f=fopen("Dane.txt","rb+");

                                                                                                                                                                                  fread(&Dlugosc,sizeof(int),1,f);

                                                                                                                                                                                  Napis2=(char*)malloc(Dlugosc+1);

                                                                                                                                                                                  fread(Napis2,1,Dlugosc,f);

                                                                                                                                                                                  Napis2[Dlugosc]=0; /* znak końca napisu */

                                                                                                                                                                                  fclose(f);

                                                                                                                                                                                  free(Napis2);