Dies ist ein Beispiel für ein Programm, das eine Eingabe übernimmt und etwas ausgibt. Es macht mit der Eingabe nichts außer dem Erzeugen der Ausgabe, aber das reicht schon für die Erfüllung des EVA-Prinzips: Eingabe – Verarbeitung – Ausgabe.
Geheime Informationen über die Arbeitsweise von Whoru.c
Wenn Ihr C-Programm läuft, arbeitet der Computer zuerst die main
-Funktion ab (es passieren zuvor noch ein paar andere Dinge, aber das interessiert uns hier nicht). In Whoru.c
gibt es fünf Anweisungen in der Funktion main
– die wie folgt arbeiten:
char me[20];
Die vorstehende Zeile sagt dem Compiler, dass er eine Stringvariable erzeugen soll. char
steht für Character, das englische Wort für Zeichen. Dies steht hier im Gegensatz zu einem Speicher für Zahlen oder einem Schuhschrank, in dem Sie Ihre alten Schuhe aufheben. Der Name der Stringvariablen ist me
(man kann einer Variablen praktisch jeden Namen geben – Kapitel 4 enthält die Regeln dazu). Die Zahl in den eckigen Klammern sagt dem Compiler, dass er für 20 Zeichen Speicherplatz organisieren muss – das sind hier 20 Bytes. Sie können also Text mit maximal 20 Zeichen Länge in me
speichern.
printf("Wie heissen Sie?");
Diese Zeile sagt dem Compiler, dass er die Funktion printf
aufrufen soll. printf
zeigt den String Wie heissen Sie?
auf dem Bildschirm an. Das ist die Aufforderung des Programms, dass es nun gerne eine Eingabe hätte.
fgets(me, 20, stdin);
Hier wird die Funktion fgets
aufgerufen. fgets
liest die Tastatur ein. Der Teil mit dem me
sagt der fgets
-Funktion, dass der Text in der Variablen me
zu speichern ist, und es sollen maximal 20
Zeichen sein.
printf("Hallo %s, nett, Sie kennenzulernen!\n", me);
Diese nächste Anweisung sagt dem Compiler, dass wieder die printf
-Funktion benötigt wird. Der Text in Anführungszeichen wird ausgegeben, aber printf
zaubert aus dem %s
noch etwas Besonderes. Das %s
bedeutet so viel wie »Ich bin nur ein Platzhalter – hier ist noch eine Lücke, fülle diese Stelle mit Inhalt«. Der Inhalt, der diesen Platzhalter füllt, wird aus der Variablen me
geholt, die deswegen hinter dem Text nach einem Komma auch noch angegeben wird.
Und schließlich muss das Programm noch ein Ergebnis erzeugen. Damit zeigt man dem Aufrufer an, ob das Programm einwandfrei gearbeitet hat und alles in Ordnung war. Will man »hier war alles prima, keine Probleme« melden, so meldet man eine 0
. Das return
selbst kümmert sich darum, dass diese 0
auch geliefert wird.
return 0;
Glauben Sieʼs oder nicht, all dieses Zeugs wird nach einigen wenigen Kapiteln auch für Sie Sinn ergeben. Sie werden in kürzester Zeit zum rebellischen C-Programmierer. Keine Frage.
Erst das Chaos, dann die Ordnung
Das hier ist eine Bonusrunde, damit Sie jetzt bereits auf das Problem der »Unordnung« aufmerksam werden, bevor es Ihnen über den Kopf wächst. Was ich meine, ist der Ramsch, der auf Ihrer Festplatte bei der Entwicklung von C-Programmen hinterlassen wird. Die vielen Hilfs- und Zwischendateien, die der Compiler nebenbei erzeugt, wenn er Ihr Programm erstellt.
Es ist ein bisschen arg naiv anzunehmen, dass das Schreiben von C-Programmen eine nette und saubere Sache ist. Aber genau wie der Typ im Park, der eigentlich nur eine Taube füttern wollte, merken Sie bald, was auf Sie zurollt.
Der C-Compiler räumt sein Zimmer nicht auf
Der Compiler wirbelt über Ihre Festplatte wie ein Tornado, er spuckt ganze Lastwagenladungen mit Dateien aus. Das muss man im Griff behalten, außerdem müssen Sie wissen, welche Dateien unbedingt aufgehoben werden müssen und welche nur Abfall sind. Erinnert ein bisschen ans Aufräumen des Kinderzimmers.
Für jedes erstellte C-Programm gibt es mindestens drei Dateien auf der Festplatte:
Der Quelltext, Endung c
Die Objektdatei, Endung obj oder Endung o
Das Programm, Endung exe
Einige Compiler erzeugen noch mehr Dateien. Wenn Sie bisher also alle Programme aus diesem Kapitel erstellt haben, finden Sie bestimmt mindestens 15 Dateien auf der Festplatte.
Wenn Sie Quelltexte editieren, erzeugt Ihr Editor möglicherweise ein Backup von der Datei, Endung bak für Backup oder auch mit einer Endung, die mit einer Tilde ~ beginnt. Löschen Sie diese Dateien nur im Ausnahmefall.
Größere Projekte werden auch Dateien mit den Endungen h und mak enthalten; löschen Sie diese Dateien ebenfalls niemals!
Was aufheben, was wegwerfen?
Ich empfehle zunächst einmal, gar keine Datei zu löschen. Wichtig zu wissen, dass die beiden bedeutendsten Dateien im Moment auf c
und auf exe
enden.
Solange Sie die Quelltextdateien (*.c) aufheben, können Sie jederzeit das Programm wieder neu erzeugen.
Die Objektdateien obj könnten später gelöscht werden, wenn das Programm fertig ist (bei größeren Projekten sollten Sie dies aber nicht tun, denn bei Änderungen dauert der Kompiliervorgang viel länger, weil alles neu erzeugt werden muss).
Löschen Sie keine Backup-Dateien (
*.bak
und *.~
), bis das Projekt fertig ist und alles wunschgemäß läuft. Der Grund dafür hat mit Magie zu tun und ist schwer zu erklären: Manchmal ändern Sie etwas, eine Kleinigkeit, und plötzlich spielt das Programm verrückt. Falls Sie die Sicherheitskopie noch zur Hand haben, können Sie wieder auf den alten Stand zurückgreifen, indem Sie die Quelltextdatei löschen und die Sicherheitskopie nach c
umbenennen. Danach wäre eine Neukompilierung eine gute Idee.
Und dann noch ein Wort zur Magie: Ich weiß nicht, woran das liegt, manchmal ändert man eine Kleinigkeit, und nichts geht mehr. Und irgendwie bekommt man das auch nicht mehr hin, wenn man die Änderung rückgängig macht. Fragen Sie einen anderen erfahrenen Programmierer, er wird Ihnen das bestätigen können. Daher ist die Sache mit den Backups keine schlechte Sache. Wenn Ihnen so etwas passiert, führen Sie Änderungen am Backup danach wirklich vorsichtig durch.
Organisation ist alles!
Wie jedes Projekt auf dem Computer sollte auch jedes C-Projekt ein eigenes Verzeichnis auf der Festplatte bekommen. Zum Beispiel sollten Sie für Ihre C-Versuche ein Verzeichnis anlegen, nennen Sie es einfach C
oder Cprojekt
oder wie auch immer. Darunter sollten Sie für jedes Projekt ein Unterverzeichnis anlegen. Der Sinn? Organisation und Ordnung. Innerhalb dieses Verzeichnisses hat alles mit C zu tun, damit Sie sich später auch wieder zurechtfinden.
Andere Verzeichnisse sollten für die Projekte entstehen, an denen Sie arbeiten. Ein neues Sortierprogramm? Verzeichnis Nsort
. Ein neues Shootʼem-up-Ballerspiel?