C-Tutorial Kapitel 5


Aus Wirthi's Wiki

Wechseln zu: Navigation, Suche
C-Tutorial
Allgemeines
Kapitel 1 (Einleitung)
Kapitel 2 (Blöcke)
Kapitel 3 (Daten)
Kapitel 4 (Kontrollanweisungen)
Kapitel 5 (Ein- und Ausgabe)
Kapitel 6 (Unterprogramme)
Kapitel 7 (Felder und Strukturen)
Kapitel 8 (Zeiger)

Inhaltsverzeichnis

Das 5. Kapitel beschreibt, wie man Daten auf der Text-Konsole ausgibt und von dort einliest.

[bearbeiten] Ausgabe auf der Konsole

Bisher war das Tutorial, trotz aller Beispiele, reine Theorie. Sie konnten zwar Programme schreiben, aber deren Funktionalität nicht testen. Dies ändert sich in diesem Abschnitt. Hier lernen Sie, wie Sie etwas am Bildschirm ausgeben.

Der dazu notwendige Befehl ist printf (das f ist KEIN Tippfehler!). Diese Anweisung gibt die ihr übergebenen Parameter auf der Konsole aus. Sie kann beliebig viele Parameter übernehmen. Es müssen jedoch Standard-Datentypen (z.B. int, char, float, double) sein!

#include <stdio.h>

void main(void)
{
  int Zahl1=12;
  char Zeichen1="A";
   
  printf("Das ist Text, und er wird als solcher ausgegeben. \n");
  printf("Der Wert der Variablen Zahl1 ist: %d \n",Zahl1);
  printf("Der Wert der Variablen Zeichen1 ist: %c \n",Zeichen1);
  printf("Der Wert der Variablen Zeichen1 ist: %d \n",Zeichen1);
}
Hinweis
  • Unter Turbo-C wird das Programm nach dem Compilieren und Ausführen sofort wieder beendet. Drücken Sie [ALT] + [F5], um zum Ausgabebildschirm zu kommen! Auch in anderen Entwicklungsumgebungen kann es ähnliche Probleme geben, suchen Sie dann nach der "Ausgabekonsole" oder ähnlichem.
Erklärung
  • Der 1. printf-Befehl gibt Text aus. Das Zeichen am Ende (\n) bedeutet "New Line", es bewegt den Cursor an den Anfang der nächsten Zeile (In Pascal verwendet man dafür Writeln).
  • Der 2. printf-Befehl gibt auch Text aus, am Ende befindet sich wieder das \n, um einen Zeilenvorschub zu erreichen. Aber was bedeutet %d ? Ganz einfach, der Compiler ersetzt %d durch den 1. Parameter, der (hoffentlich!!!) nach dem Text angegeben wird. In diesem Fall wird %d durch den Wert der Variablen Zahl1 ersetzt. Das d im %d bedeutet "Dezimalzahl", der Computer gibt also eine Zahl aus.
  • In der 3. Ausgabe wird ein Zeichen ausgegeben. Diesmal bedeutet %c "char" (Zeichen). Es wird also %c durch "A" ersetzt.
  • Die letzte Ausgabe verhält sich merkwürdig - es wird eine Zahl ausgegeben, obwohl der Parameter ein Zeichen (char) ist. ABER:

%d im Text bedeutet, dass eine Zahl auszugeben ist. Ein Char kann ja auch als Zahl interpretiert werden. Es wird also 65 (der ASCII-Wert von "A") ausgegeben. Das ist ein typisches Beispiel für das mögliche unterschiedliche Interpretieren einer char Variablen!

[bearbeiten] Bildschirm löschen

Oft sind von anderen Programmen noch "Rückstände" vorhanden. Nicht nur um die zu beseitigen, brauchen Sie einen "Bildschirm-Lösch-Befehl". Dieser ist in conio.h definiert und nennt sich "clrscr" ("clear screen", deut: "lösche Bildschirm").

#include <conio.h>
#include <stdio.h>

void main(void)
{
  clrscr();
  ....
}

Diese Funktion zählt allerdings nicht zum (ANSI-)C-Standard. Sie wird daher von vielen Compilern nicht angeboten.

[bearbeiten] Tastatur-Eingabe

Um ein sinnvolles Programm schreiben zu können, muss der Benutzer über die Tastatur Befehle eingeben können. Die dafür notwendigen Funktionen werden in diesem Kapitel vorgestellt.

Der wichtigste Befehl ist scanf. Er liest Daten von der Standardeingabe, der Tastatur. Die Syntax entspricht derer von printf, nur dass man außer den %c und %d keine weiteren Angaben im "Text" machen darf:

printf("Bitte geben Sie eine Zahl ein: ");
scanf("%d",&Zahl1);
printf("Geben Sie einen Zeichen ein: ");
scanf("%c",&Zeichen1);

Das Programm gibt eine Eingabeaufforderung aus. Dann erwartet es vom Benutzer, dass er eine Zahl eingibt, die mit ENTER bestätigt wird. Diese Zahl wird in Zahl1 abgespeichert. Danach erfolgt wiederum eine Aufforderung zur Eingabe, diesmal eines einzelnen Zeichens. Dieses kann man nun eingeben und ebenfalls mit ENTER bestätigen.

Macht man keine dem Datentyp der erwarteten Variable entsprechende Eingabe, dann bricht das Programm mit einer Fehlermeldung ab (wenn man z.B. "1_T2" eingibt, wenn eine Zahl erwartet wird)!

Das & vor den Parametern ist notwendig. Warum, das erfahren Sie im Kapitel "Unterprogramme". Für die Profis eine Kurz-Erklärung: Das Unterprogramm scanf bekommt zwar einen Wert übergeben, kann aber keinen zurückliefern ("call by value"). Daher wird kein Wert, sondern ein Zeiger auf eine Variable übergeben. Mit dem & Zeichen bekommen Sie die Adresse einer Variablen ("call by reference").

[bearbeiten] getch

getch ist eine Funktion (Siehe Kapitel Unterprogramme), die ein char-Zeichen von der Tastatur einliest. Dazu geben Sie im Programm einfach folgede Zeile an:

charVariable:=getch();

Diese Zeile erwartet die Eingabe eines char-Zeichens. Im Gegensatz zu scanf muß man nach der Eingabe des Zeichens jedoch nicht ENTER drücken, um die Eingabe zu bestätigen. In der Variable charVariable wird das erste Zeichen gespeichert, das auf der Tastatur eingegeben wird.

Eine weiter Möglichkeit der Anwendung von getch ist es, wenn Sie einfach "getch();" als Befehl eingeben. Dann wartet der Computer, bis Sie eine Taste drücken, speichert diese aber nicht ab.

[bearbeiten] kbhit

Dies ist ebenfalls eine Funktion, die eine boolschen Ausdruck zurück liefert. Sie gibt Bescheid darüber, ob eine Taste gedrückt wurde, und mit scanf oder getch abgerufen werden kann (zum Verständnis: auf der Tastatur eingegebene Zeichen werden meist nicht direkt vom Programm verarbeitet, sondern erst vom Betriebssystem oder dem BIOS des Computers gespeichert. Wenn das Programm nun eine Eingabe erwartet, werden die gespeicherten Zeichen "verwendet". Dies lauft jedoch so schnell ab, dass der Benutzer davon nichts merkt). Ist diese Variable TRUE, dann ist ein Zeichen abfragebereit, sonst nicht:

while ( !kbhit() )
{
  Zahl1=Zahl1+1;
  printf("%d\n",Zahl1);
}

Dieser Programmteil erhöht solange Zahl1 und gibt diese aus, bis der Benutzer eine Taste drückt.

Allgemeines - Kapitel 1 - Kapitel 2 - Kapitel 3 - Kapitel 4 - Kapitel 5 - Kapitel 6 - Kapitel 7 - Kapitel 8

Persönliche Werkzeuge