#include <stdio.h>
#pragma warning(disable : 4996)
const int MAXSTR = 10; // Stringlaenge
// 2. Funktionsprototyping
void begruessung(void);
void ausgabe(int);
int verarbeitung(char []);
void eingabe(char[], int);
int main(void)
{
char str[MAXSTR];
const char str2[] = "Teststring"; // in C: 0-terminierter String
int i = 0; // Laufvariable
int anzZahlen = 0;
int anzGrossBuchstaben = 0;
begruessung(); // 1. Funktionsaufruf
eingabe(str, MAXSTR);
anzZahlen = verarbeitung(str); // 1. Funktionsaufruf mit Rückgabewert
ausgabe(anzZahlen); // 1. Funktionsaufruf mit Parameter
ausgabe(10); // bei cbv auch eine Konstante als Übergabeparameter
fflush(stdin); // Tastaturpuffer löschen
getchar(); // Warte auf Enter-Taste
}
// 3. Funktionsdefinition
void begruessung(void)
{
printf("\t\tWORD COUNT PROGRAMM Version 0.0\n");
printf("\tZaehlt die Anzanl der Zahlen\n\n");
}
void ausgabe(int aus) // Prameterübergabe: call by value (cbv)
{
printf("\nAnzahl Zahlen= %d\n", aus);
}
int verarbeitung(char str[])
{
int i = 0;
int anzZahlen = 0;
// siehe ASCII-Tabelle: https://d...content-available-to-author-only...a.org/wiki/American_Standard_Code_for_Information_Interchange#ASCII-Tabelle
while (str[i] != 0) // Integer 0 entspricht char '\0'
{
//if (str[i] >= '0' && str[i] <= '9') // Zeichen aus ASCII-Tabelle
//if (str[i] >= 48 && str[i] <= 57) // Dezimale-Werte aus ASCII-Tabelle
//if (str[i] >= 060 && str[i] <= 071) // Oktal-Werte mit führender 0
if (str[i] >= 0x30 && str[i] <= 0x39) // Hex-Werte
anzZahlen++;
i++; // Laufvariable erhöhen
}
return anzZahlen;
}
void eingabe(char feld[], int max)
{
printf("Geben Sie einen String ein: ");
//scanf("%s", feld);
fgets(feld, max, stdin);
}