home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_01 / PC_V11_B.LZH / DEMO_PD / CCOUNT.C < prev    next >
C/C++ Source or Header  |  1991-08-02  |  4KB  |  101 lines

  1. /************************************************************************/
  2. /*                                                                      */
  3. /*       CCOUNT.C                                                       */
  4. /*                                                                      */
  5. /*       Ein Beispielprogramm für die Verwendung des Pure Debuggers.    */
  6. /*                                                                      */
  7. /*       Copyright (c) 1989 Borland International.                      */
  8. /*       All rights reserved.                                           */
  9. /*                                                                      */
  10. /************************************************************************/
  11.  
  12. #include <stdio.h>
  13. #include <string.h>
  14. #include <stdlib.h>
  15. #include <ctype.h>
  16.  
  17. #define NUL   ((char)0)             /* Endemarke (Nullzeichen)          */
  18.  
  19. extern char *print_cstatist( int *statarray );
  20.  
  21. /* -------------------------------------------------------------------- */
  22. /*       Hauptprogramm                                                  */
  23. /* -------------------------------------------------------------------- */
  24.  
  25. void main( int argc, char *argv[] )
  26. {
  27.     FILE       *infile;             /* Eingabedatei                     */
  28.     char       linebuf[1024];       /* "momentane Zeile"                */
  29.     char       *lineptr;            /* Zeiger auf das erste/nächste     */
  30.                                     /* Wort in linebuf                  */
  31.     int        i;                   /* für Schleifen usw.               */
  32.     static int cfrequence[(int)('Z' - 'A') + 2];
  33.                                     /* speichert die Häufigkeit der     */
  34.                                     /* Buchstaben sowie aller anderen   */
  35.                                     /* Zeichen                          */
  36.  
  37.     printf( "    CCOUNT ermittelt die Häufigkeitsverteilung der Buchstaben in einem Text\n" );
  38.     printf( "    -----------------------------------------------------------------------\n\n" );
  39.  
  40.     if ( argc != 2 )
  41.     {
  42.         printf( "Geben Sie den Namen der Textdatei ein (z.B. TEXT.DAT),\n" );
  43.         printf( "oder nur <Return> für Abbruch: " );
  44.  
  45.         gets( linebuf );            /* linebuf wird hier "mißbraucht"   */
  46.  
  47.         if ( !strlen( linebuf ))    /* nur RETURN gedrückt?             */
  48.             exit( 1 );              /* Dann Programm vorzeitig beenden. */
  49.     }
  50.     else
  51.         strcpy( linebuf, argv[1] );
  52.  
  53.     infile = fopen( linebuf, "r" ); /* Öffnen der Datei                 */
  54.     if ( !infile )
  55.     {
  56.         printf( "Fehler beim Öffnen von %s\n", linebuf );
  57.         exit( 1 );
  58.     }
  59.  
  60.     printf( "Einlesen des Textes %s\n", linebuf );
  61.  
  62.                                     /* Lesen einer Zeile                */
  63.     while ( fgets(linebuf, (int) sizeof( linebuf ), infile ))
  64.     {
  65.                                     /* Prüfung des Pufferendes und      */
  66.                                     /* Entfernen des abschließenden \n  */
  67.         i = (int)strlen( linebuf ); /* Länge der Zeile                  */
  68.  
  69.                                     /* Zeilenvorschub letztes Zeichen?  */
  70.         if ( linebuf[i - 1] != '\n' )
  71.             printf( "\nBeginn einer überlangen Zeile:\n\t%70s\n", linebuf );
  72.         else
  73.             linebuf[i - 1] = NUL;   /* Zeilenvorschub ersetzen          */
  74.  
  75.         strupr( linebuf );
  76.         lineptr = linebuf;
  77.  
  78.         while ( *lineptr )
  79.         {
  80.             if ( isupper( *lineptr ))
  81.                 cfrequence[(int)(*lineptr - 'A')]++;
  82.             else
  83.                 cfrequence[(int)('Z' - 'A') + 1]++;
  84.  
  85.             lineptr++;
  86.         }
  87.     }
  88.  
  89.     print_cstatist( cfrequence );
  90.  
  91.     puts( "\nWeiter mit <Return>\n" );
  92.     getchar();
  93.  
  94.     fclose(infile);                 /* Schließen der Datei und          */
  95.     exit( 0 );                      /* Programmende                     */
  96. }
  97.  
  98. /* -------------------------------------------------------------------- */
  99. /*       Ende CCOUNT.C                                                  */
  100. /* -------------------------------------------------------------------- */
  101.