[WikiDyd] [TitleIndex] [WordIndex

Języki i metodyka programowania

Przykłady z wykładów w semestrze jesiennym 2011

Wykład II, 11 października 2011

Zajmowaliśmy się najpierw znakami - pokazaliśmy, że zmienna typu char przechowuje niewielką (0-255) liczbę całkowitą:

   1 /* Wypisujemy tabele:
   2    kod-dziesietny = kod-heksa = 'znak'
   3    w podanym przedziale kodow
   4 */
   5 #include <stdio.h>
   6 #include <stdlib.h>
   7 
   8 int
   9 main( int argc, char *argv[] ) {
  10         int p = atoi( argv[1] );
  11   int k = atoi( argv[2] );
  12   int i;
  13 
  14         for( i= p; i <= k; i++ ) 
  15                 printf( "%d(10) = %x(16) = '%c'\n", i, i, i );
  16 
  17         return 0;
  18 }

   1 /* Wypisujemy tabele:
   2    kod-dziesietny = kod-heksa = 'znak'
   3    w podanym przedziale znakow
   4 */
   5 #include <stdio.h>
   6 #include <stdlib.h>
   7 
   8 int
   9 main( int argc, char *argv[] ) {
  10         int p = argc > 1 ? argv[1][0] : 'A';
  11   int k = argc > 2 ? argv[2][0] : 'Z';
  12   int i;
  13 
  14         for( i= p; i <= k; i++ ) 
  15                 printf( "%d(10) = %x(16) = '%c'\n", i, i, i );
  16 
  17         return 0;
  18 }

Pokazaliśmy też, że możemy wykorzystywać znaki jako liczby - np. do indeksowania tablicy w programie zliczającym wystąpienia znaków w pliku:

   1 /* Zliczamy wystapienia poszczegolnych bajtow 
   2    w podanym pliku
   3 */
   4 #include <stdio.h>
   5 
   6 #define MAXBYTE 256
   7 
   8 int
   9 main( int argc, char *argv[] ) {
  10   FILE* in = argc > 1 ? fopen( argv[1], "r" ) : stdin;
  11   int c;
  12         unsigned long p[MAXBYTE];
  13   int i;
  14 
  15   if( in == NULL ) {
  16                 printf( "%s: nie moge czytac pliku \"%s\" !\n", argv[0], argv[1] );
  17                 return 1;
  18         }
  19 
  20         for( i= 0; i < MAXBYTE; i++ )
  21                 p[i]= 0;
  22 
  23   while( (c= fgetc(in)) != EOF )
  24                         p[c]++;
  25 
  26         for( i= 0; i < MAXBYTE; i++ ) {
  27                 if( p[i] > 0 ) {
  28                         printf( "'%c' %02x# \t-> %ld\n", i, i, p[i] );
  29                 }
  30         }
  31 
  32         return 0;
  33 }

2015-09-23 06:44