Wolf / Krooß | C von A bis Z | E-Book | sack.de
E-Book

E-Book, Deutsch, 1263 Seiten

Reihe: Rheinwerk Computing

Wolf / Krooß C von A bis Z

Das umfassende Handbuch
5. Auflage 2023
ISBN: 978-3-8362-9511-6
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection

Das umfassende Handbuch

E-Book, Deutsch, 1263 Seiten

Reihe: Rheinwerk Computing

ISBN: 978-3-8362-9511-6
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection



Unser beliebter Klassiker in fünfter Auflage. Zum aktuellen Standard C23 und mit einem Autorenteam aus Praxis und Lehre. Lassen Sie sich umfassend einführen oder nutzen Sie das Buch als Nachschlagewerk. Von den Grundlagen über die dynamische Speicherverwaltung bis zur plattformübergreifenden Entwicklung. Randvoll mit hilfreichen Beispielen und Praxistipps - C-Wissen pur!

Aus dem Inhalt:

  • Datenstrukturen
  • Algorithmen
  • Sicherheit
  • Dynamische Speicherverwaltung
  • Netzwerkprogrammierung
  • Cross-Plattform-Entwicklung
  • Parallele Programmierung
  • Auf Datenbanken zugreifen
  • Codebeispiele und Praxistipps


Jürgen Wolf ist seit über 16 Jahren Autor und seit mehr als 10 Jahren passionierter Digitalfotograf. Seine Buchthemen sind Bildbearbeitung, Fotografie, Webentwicklung, Betriebssysteme und Programmierung. Und egal welches Thema: Bei jedem Buch ist es sein Ziel, auch komplexe Zusammenhänge klar und verständlich zu erklären.
Wolf / Krooß C von A bis Z jetzt bestellen!

Weitere Infos & Material


Vorwort ... 25  1.  Einstieg in C ... 27  1.1 ... Übersicht zu C ... 27  1.2 ... Der ANSI-C-Standard ... 29  1.3 ... Der POSIX-Standard ... 32  1.4 ... Vor- und Nachteile der Programmiersprache C ... 33  1.5 ... C in diesem Buch ... 34  1.6 ... Was benötigen Sie für C? ... 35  1.7 ... Welcher Compiler und welches Betriebssystem? ... 37  1.8 ... Unterschiede zwischen Windows und Linux ... 38  1.9 ... Eine Programmierumgebung einrichten am Beispiel von Pelles C 8.00 für Windows ... 38  1.10 ... Eine Programmierumgebung einrichten - Nano/GCC für Linux ... 47  2.  Eine günstige Programmierplattform - der Raspberry Pi ... 49  2.1 ... Was genau ist der Raspberry Pi? ... 50  2.2 ... Installation eines Linux-Betriebssystems am Beispiel von Raspberry Pi OS ... 54  2.3 ... Die Konfiguration des Raspberry Pi im Detail ... 63  2.4 ... Das Tool raspi-config ... 63  3.  Das erste Programm ... 69  3.1 ... Was leistet der Editor? ... 70  3.2 ... Was leistet der Compiler? ... 70  3.3 ... Was sind Include-Dateien, und wozu benötigt man sie? ... 71  3.4 ... Das erste Programm - die Ausgabe eines Textes in der Konsole ... 71  3.5 ... Das Hallo-Welt-Programm im Detail ... 72  3.6 ... Wie kompiliert man ein Programm und führt es anschließend aus? ... 75  4.  Grundlagen ... 77  4.1 ... Symbole ... 77  4.2 ... Zeichensätze ... 84  4.3 ... Strings ... 89  4.4 ... Das Einführungsbeispiel mit Strings ... 90  5.  Basisdatentypen ... 91  5.1 ... Was ist ein Byte, und wie werden Zahlen in C gespeichert? ... 91  5.2 ... Was ist eine Variable, und was ist ein Variablentyp? ... 92  5.3 ... Was ist ein Operand? ... 93  5.4 ... Was ist ein Parameter? ... 93  5.5 ... Wie speichert ein Prozessor Variablen, Parameter und Operanden? ... 93  5.6 ... Was sind Speicheradressen, und warum sind sie wichtig für C? ... 93  5.7 ... Deklaration und Definition von Variablen ... 94  5.8 ... Array-Datentypen (Datenfelder) ... 96  5.9 ... Standard-Datentypen ... 96  5.10 ... Ganzzahlige Typen mit vorgegebener Breite - ... 103  5.11 ... Die Gleitpunkttypen »float« und »double« ... 107  5.12 ... Komplexe Gleitpunkttypen - ... 115  5.13 ... Der Datentyp »char«, Standardgröße 1 Byte ... 117  5.14 ... Nationale contra internationale Zeichensätze ... 123  5.15 ... Boolesche Werte - ... 127  5.16 ... Der Unterschied zwischen vorzeichenlosen und vorzeichenbehafteten Zahlen ... 128  5.17 ... Limits für Ganzzahl- und Gleitpunktdatentypen ... 130  5.18 ... Der Typ »void« ... 134  5.19 ... Numerische Konstanten ... 134  5.20 ... Umwandlungsvorgaben für formatierte Ein-/Ausgabe ... 136  6.  Formatierte Ein-/Ausgabe mit »scanf()« und »printf()« ... 145  6.1 ... Formatierte Eingabe mit »scanf()« ... 145  6.2 ... Formatierte Ausgabe mit »printf()« ... 155  7.  Operatoren ... 159  7.1 ... Was sind Operatoren, und wozu benötigt man sie in C? ... 159  7.2 ... Arithmetische Operatoren ... 160  7.3 ... Erweiterte Darstellung arithmetischer Operatoren ... 164  7.4 ... Inkrement- und Dekrement-Operatoren ... 165  7.5 ... Bit-Operatoren ... 167  7.6 ... Makros für logische Operatoren und Bit-Operatoren - ... 175  7.7 ... Der »sizeof«-Operator ... 176  8.  Typumwandlung ... 179  8.1 ... Automatische implizite Datentypumwandlung durch den CCompiler ... 179  8.2 ... Wozu benötigt man das benutzerdefinierte explizite Typecasting? ... 184  8.3 ... Explizite Datentypumwandlung mit Typecasting an Beispielen ... 184  9.  Kontrollstrukturen ... 187  9.1 ... Verzweigungen mit der »if«-Bedingung ... 188  9.2 ... Die Verzweigung mit »else if« ... 192  9.3 ... Die Verzweigung mit »else« ... 194  9.4 ... Der !-Operator (logischer NOT-Operator) ... 198  9.5 ... Logisches UND (&&) - logisches ODER (||) ... 200  9.6 ... Der Bedingungsoperator »?:« ... 203  9.7 ... Fallunterscheidung: die »switch«-Verzweigung ... 205  9.8 ... Die »while«-Schleife ... 210  9.9 ... Die »do while«-Schleife ... 214  9.10 ... Die »for«-Schleife ... 219  9.11 ... Kontrollierter Ausstieg aus Schleifen mit »break« ... 227  9.12 ... Direkte Sprünge mit »goto« ... 229  9.13 ... Einige Anmerkungen zum Notationsstil, ehe Sie weiterlesen ... 229  9.14 ... Einige Anmerkungen zu einem guten Programmierstil ... 230

10.  Funktionen ... 233  10.1 ... Was sind Funktionen? ... 233  10.2 ... Wozu dienen Funktionen? ... 234  10.3 ... Definition von Funktionen ... 234  10.4 ... Funktionsaufruf ... 235  10.5 ... Funktionsdeklaration ... 237  10.6 ... Lokale Variablen ... 239  10.7 ... Globale Variablen ... 241  10.8 ... Statische Variablen ... 243  10.9 ... Schlüsselwörter für Variablen - Speicherklassen ... 244  10.10 ... Typ-Qualifizierer ... 245  10.11 ... Geltungsbereich von Variablen ... 246  10.12 ... Speicherklassen-Spezifizierer für Funktionen ... 248  10.13 ... Datenaustausch zwischen Funktionen ... 249  10.14 ... Wertübergabe an Funktionen (Call-by-Value) ... 250  10.15 ... Der Rückgabewert von Funktionen ... 254  10.16 ... Die Hauptfunktion »main()« ... 256  10.17 ... Was bedeutet der Rückgabewert beim Beenden eines Programms? ... 258  10.18 ... Funktionen der Laufzeitbibliothek ... 262  10.19 ... Getrenntes Kompilieren von Quelldateien ... 263  10.20 ... Rekursive Funktionen (Rekursion) ... 265  10.21 ... »inline«-Funktionen ... 278

11.  Präprozessor-Direktiven ... 281  11.1 ... Mit »#include« Dateien einbinden ... 282  11.2 ... Wichtige vordefinierte Headerdateien für C ... 283  11.3 ... Makros und Konstanten - »#define« ... 285  11.4 ... Bedingte Kompilierung mit »#ifdef« ... 294  11.5 ... Vordefinierte Präprozessor-Direktiven (ANSI C) ... 300  11.6 ... Einen Makroparameter durch einen String ersetzen ... 302  11.7 ... »#undef« - Makronamen wieder aufheben ... 304  11.8 ... Fehlermeldungen ausgeben mit »#error« ... 304  11.9 ... »#pragma« (gilt nur für Windows) ... 306

12.  Arrays ... 307  12.1 ... Arrays deklarieren ... 308  12.2 ... Initialisierung und Zugriff auf Arrays ... 309  12.3 ... Arrays vergleichen ... 316  12.4 ... Anzahl der Elemente eines Arrays ermitteln ... 318  12.5 ... Übergabe von Arrays an Funktionen ... 319  12.6 ... Arrays aus Funktionen zurückgeben ... 322  12.7 ... Programmbeispiel zu Arrays ... 323  12.8 ... Array-Werte über die Tastatur einlesen ... 327  12.9 ... Mehrdimensionale Arrays ... 328  12.10 ... Arrays in eine Tabellenkalkulation einlesen (CSV-Dateien) ... 343  12.11 ... Strings/Zeichenketten (»char«-Array) ... 345  12.12 ... Einlesen von Strings ... 352  12.13 ... Die Standard-Bibliothek ... 355

13.  Zeiger (Pointer) ... 369  13.1 ... Der Unterschied zwischen einer normalen Variablen und einem Zeiger ... 369  13.2 ... Zeiger deklarieren ... 370  13.3 ... Zeiger initialisieren ... 371  13.4 ... Zeigerarithmetik ... 384  13.5 ... Zeiger, die auf andere Zeiger verweisen ... 385  13.6 ... Typensicherung bei der Dereferenzierung ... 388  13.7 ... Zeiger als Funktionsparameter (Call-by-Reference) ... 389  13.8 ... Array und Zeiger ... 396  13.9 ... Zeiger auf Strings ... 403  13.10 ... Zeiger auf Zeiger und Stringtabellen ... 405  13.11 ... Zeiger auf Funktionen ... 415  13.12 ... void-Zeiger ... 420  13.13 ... Äquivalenz zwischen Zeigern und Arrays ... 424  13.14 ... Der »restrict«-Zeiger ... 426

14.  Kommandozeilenargumente ... 429  14.1 ... Argumente an die Hauptfunktion übergeben ... 430  14.2 ... Argumente aus der Kommandozeile auswerten ... 435

15.  Dynamische Speicherverwaltung ... 441  15.1 ... Das Speicherkonzept ... 442  15.2 ... Speicherallokation mit »malloc()« ... 444  15.3 ... Das NULL-Mysterium ... 447  15.4 ... Speicherreservierung und ihre Probleme ... 451  15.5 ... »free()« - Speicher wieder freigeben ... 452  15.6 ... Dynamische Arrays ... 460  15.7 ... Speicher dynamisch reservieren mit »realloc()« und »calloc()« ... 464  15.8 ... Speicher vom Stack anfordern mit »alloca()« (nicht ANSI C) ... 468  15.9 ... Ergänzende Anmerkungen zu »free()« ... 468  15.10 ... Zweidimensionale dynamische Arrays ... 469  15.11 ... Was muss man tun, wenn die Speicherallokation fehlschlägt? ... 472

16.  Strukturen ... 479  16.1 ... Benutzerdefinierte Typendefinitionen mit »typedef« ... 479  16.2 ... Was ist ein strukturierter Datentyp, und wozu benötigt man ihn in C? ... 479  16.3 ... Strukturen mit »typedef struct« deklarieren ... 480  16.4 ... Initialisierung und Zugriff auf Strukturen ... 482  16.5 ... Strukturen als Wertübergabe an eine Funktion benutzen ... 491  16.6 ... Strukturen als Rückgabewert einer Funktion benutzen ... 493  16.7 ... Strukturen miteinander vergleichen ... 495  16.8 ... Arrays von Strukturen erstellen ... 497  16.9 ... Strukturen in Strukturen (Nested Structures) ... 504  16.10 ... Weitere spezielle Datentypen ... 514  16.11 ... Attribute von Strukturen verändern ... 524  16.12 ... Bitfelder ... 528  16.13 ... Das »offsetof«-Makro ... 535

17.  Ein-/Ausgabe-Funktionen ... 537  17.1 ... Was ist eine Datei aus Sicht der Programmiersprache C? ... 537  17.2 ... Formatierte und unformatierte Ein-/Ausgabe ... 538  17.3 ... Höhere Ein-/Ausgabe-Funktionen mit ... 538  17.4 ... Streams (Ein-/Ausgabe-Datenströme) ... 566  17.5 ... Spezielle Ein-/Ausgabe-Funktionen für Streams ... 595  17.6 ... Low-Level-Datei-I/O-Funktionen (nicht ANSI C) ... 641

18.  Attribute von Dateien und das Arbeiten mit Verzeichnissen (nicht ANSI C) ... 673  18.1 ... Die Attribute einer Datei mit »stat()« ermitteln ... 673  18.2 ... Prüfen des Zugriffsrechts mit »access()« ... 691  18.3 ... Verzeichnisfunktionen ... 693

19.  Arbeiten mit variabel langen Argumentlisten - ... 705  19.1 ... Was ist eine Ellipse, und wie werden mit ihr Parameter übergeben? ... 705  19.2 ... Wie kann man mit die Parameterliste abfragen? ... 706  19.3 ... Makros in - »va_list«, »va_arg«, »va_start« und »va_end« ... 706  19.4 ... Die Argumentliste am Anfang oder Ende kennzeichnen ... 707  19.5 ... »vprintf()«, »vsprintf()«, »vfsprintf()« und »vsnsprintf()« ... 712  19.6 ... Variadic Makros - __VA_ARGS__ ... 716

20.  Zeitroutinen ... 721  20.1 ... Die Headerdatei ... 721  20.2 ... Laufzeitmessung (Profiling) ... 734  20.3 ... Besonderheiten beim Raspberry Pi ... 735

21.  Weitere Headerdateien und ihre Funktionen (ANSI C) ... 737  21.1 ... Testmöglichkeiten und Fehlersuche - ... 738  21.2 ... Zeichenklassifizierung und Umwandlung - ... 739  21.3 ... Mathematische Funktionen - , und ... 744  21.4 ... Einige nützliche Funktionen in ... 758  21.5 ... Länderspezifische Eigenheiten - ... 778  21.6 ... Nichtlokale Sprünge - ... 782  21.7 ... Einige nützliche Funktionen in ... 786  21.8 ... Die »mem...«-Funktionen zur Speichermanipulation - ... 791

22.  Dynamische Datenstrukturen ... 797  22.1 ... Lineare Listen (einfach verkettete Listen) ... 797  22.2 ... Doppelt verkettete Listen ... 832  22.3 ... Stacks nach dem LIFO-(Last-in-first-out-)Prinzip ... 849  22.4 ... Queues nach dem FIFO-Prinzip ... 870  22.5 ... Dynamisches Array mit flexiblen Elementen ... 879

23.  Algorithmen ... 881  23.1 ... Was sind Algorithmen? ... 881  23.2 ... Einige einfache Beispiele für Algorithmen ... 883  23.3 ... Kryptografische Algorithmen ... 969

24.  MySQL und C ... 1027  24.1 ... Aufbau eines Datenbanksystems ... 1027  24.2 ... MySQL installieren ... 1033  24.3 ... Crashkurs SQL ... 1037  24.4 ... Die MySQL-C-API ... 1052  24.5 ... MySQL und C mit CGI ... 1083  24.6 ... Funktionsübersicht ... 1101  24.7 ... Datentypenübersicht der C-API ... 1105  24.8 ... Weiterführende Literatur zu Datenbanken ... 1105

25.  Netzwerkprogrammierung und Cross-Plattform-Entwicklung ... 1107  25.1 ... Begriffe zur Netzwerktechnik ... 1107  25.2 ... Was sind Sockets und wie legt man sie in C an? ... 1114  25.3 ... Headerdateien für die Netzwerkprogrammierung ... 1115  25.4 ... Das Client-Server-Prinzip ... 1118  25.5 ... Erstellen einer Client-Anwendung ... 1120  25.6 ... Erstellen einer Server-Anwendung ... 1130  25.7 ... Ein einfacher TCP-Echo-Server ... 1135  25.8 ... Cross-Plattform-Development ... 1143  25.9 ... Weitere Anmerkungen zur Netzwerkprogrammierung und Literaturempfehlungen ... 1166

26.  Paralleles Rechnen ... 1173  26.1 ... Was ist Multitasking und wie wird es realisiert? ... 1173  26.2 ... Braucht man spezielle Prozessoren für Multitasking? ... 1174  26.3 ... Braucht man spezielle Multitasking-Betriebssysteme? ... 1177  26.4 ... Programmiertechniken der Parallelisierung ... 1177  26.5 ... Vom Prozess zum Thread ... 1179  26.6 ... Mit POSIX-Threads programmieren ... 1182

27.  Sicheres Programmieren ... 1193  27.1 ... Buffer Overflow (Speicherüberlauf) ... 1194  27.2 ... Warum sind Buffer Overflows kritisch für die Sicherheit? ... 1195  27.3 ... Wie man Buffer Overflows vermeidet ... 1202  27.4 ... Gegenmaßnahmen zum Buffer Overflow, wenn das Programm fertig ist ... 1205  27.5 ... Stack Overflow (Stapelüberlauf) ... 1210  27.6 ... Was verursacht Stack Overflows? ... 1210  27.7 ... Warum ist ein Stapelüberlauf kritisch für die Sicherheit? ... 1210  27.8 ... Wie man Stack Overflows verhindert ... 1211  27.9 ... Memory Leaks (Speicherlecks) ... 1212  27.10 ... Bibliotheken und Tools zu Memory Leaks ... 1216  27.11 ... Tipps zu Sicherheitsproblemen ... 1217

28.  Wie geht's jetzt weiter? ... 1219  28.1 ... GUI-Programmierung - grafische Oberflächen ... 1220  28.2 ... Grafikprogrammierung unter Windows ... 1223  Anhang ... 1241  A ... Operatoren ... 1241  Index ... 1247


1.9    Eine Programmierumgebung einrichten am Beispiel von Pelles C 8.00 für Windows


Pelles C ist eine freie Entwicklungsumgebung für Windows. Sie können sich einfach eine Installationsdatei aus dem Internet herunterladen, sie ausführen und haben dann eine grafische Oberfläche zur Verfügung, die alles enthält, was man für die C-Programmierung benötigt. Ein paar Dinge gibt es allerdings zu beachten. Zum Beispiel gibt es für viele Software-Downloads inzwischen zahlreiche Quellen. Viele dieser Quellen (wie z. B. Softradar oder Softsonic) sind inzwischen nicht mehr zu empfehlen und werden auch von Computermagazinen wie der c’t als unsicher bezeichnet. Das liegt nicht unbedingt daran, dass diese Quellen Viren und Spyware verbreiten, sondern eher daran, dass die Downloads inzwischen über Download-Assistenten ablaufen, die sich vorher selbstständig auf dem PC installieren. Oft verbreiten diese Assistenten Werbung oder blenden beim Download Werbung ein. Manche gehen sogar so weit, die Konfiguration des Browsers zu ändern, sodass manche Banner durch den Spamfilter rutschen.

1.9.1    Pelles C installieren


Die IDE (IDE ist die Abkürzung von Integrated Development Environment) können Sie wie gesagt von unterschiedlichen Quellen herunterladen. Am zuverlässigsten hat sich bei mir der entsprechende Download-Bereich des PC-Magazins c’t erwiesen, das von Heise Medien herausgegeben wird. In der c’t werden nicht nur Entwicklungsumgebungen, sondern auch Tools für die Programmierung vorgestellt. Um auf die Download-Seite für Pelles C zu gelangen, öffnen Sie in Ihrem Browser folgenden Link und klicken Zum Download:

https://www.heise.de/download/product/pelles-c-31327

Abbildung 1.1     Heise-Download-Seite für Pelles C

Nun sind Sie im eigentlichen Programm-Download-Bereich. Achten Sie allerdings unbedingt darauf, anschließend die richtige Version herunterzuladen. Es gibt von Pelles C nämlich eine Version für 32-Bit-Windows und eine Version für 64-Bit-Windows. Wenn Sie einen 64-Bit-Prozessor haben (ab Windows 8 ist dies wahrscheinlich stets der Fall), dann laden Sie die 64-Bit-Version herunter, ansonsten (wenn Sie unsicher sind oder die letzte 64-Bit-Version bei Ihnen auf Windows 10/11 Probleme gemacht hat) die 32-Bit-Version. Die heruntergeladene Datei sollte eine EXE-Datei sein, die normalerweise im Download-Ordner von Windows erscheint und schlicht durch einen Mausklick ausgeführt werden kann. Dies gilt auch für Windows 10 und 11, denn obwohl Windows 10 und 11 nicht in den Systemvoraussetzungen erscheinen, läuft Pelles C auch auf diesen beiden Systemen.

Hinweis: Unterschiede zwischen 32 und 64 Bit

Für dieses Buch ist es unerheblich, ob Sie einen 32-Bit-Compiler oder einen 64-Bit-Compiler benutzen. 64-Bit-Compiler sind nur bei einigen Operationen schneller als ein 32-Bit-Compiler, vor allem bei der grafischen Bildverarbeitung oder beim Berechnen sehr großer Zahlen.

Abbildung 1.2     Von Pelles C gibt es eine 32- und eine 64-Bit-Version.

Wenn Sie das Setup-Programm von Pelles C starten, dann ruft der Windows-Installationsassistent die Installationsroutine automatisch auf. Eventuell müssen Sie, wenn Sie nicht als Administrator arbeiten, die Installation vorher noch bestätigen. Anschließend erscheint der Startbildschirm des Installationsprogramms. Dort müssen Sie zunächst die Softwarelizenz (License Agreement) zu Pelles C bestätigen. Das License Agreement ist eine Lizenzvereinbarung, die im Fall von Pelles C Folgendes besagt: Sie dürfen den freien Quellcode für Pelles C (der mit dem Programm zusammen verfügbar ist) verändern und problemlos für eigene Projekte verwenden. Ebenfalls dürfen Sie Pelles C verteilen und als Download anbieten. Allerdings darf Pelles C, da es Freeware ist, nicht verkauft oder für kommerzielle Zwecke benutzt werden. Auch haftet der Urheber des freien Programms nicht für Schäden, die eventuell durch die Benutzung entstehen (z. B. Datenverluste oder finanzielle Schäden). Nur, wenn Sie das Häkchen vor I accept the terms in the license agreement mit der Maus setzen, können Sie Pelles C durch einen Klick auf next installieren.

Abbildung 1.3     Freeware-Lizenz-Bildschirm von Pelles C

Nun startet der eigentliche Setup-Vorgang mit einem Informationsbildschirm zu der Version, die Sie gerade installieren. Normalerweise steht dort einfach die Windows-Version, die das Installationsprogramm unterstützt. Erschrecken Sie nicht, wenn dort Windows 10/11 fehlen – Pelles C läuft trotzdem auf Windows 10 oder sogar 11. Den Informationsbildschirm können Sie also problemlos durch Next überspringen. Das nächste Fenster ist schon wichtiger, denn dort wählen Sie aus, was alles installiert werden soll. Am einfachsten ist es, aus der Auswahlliste Select the Type of Install den Eintrag Full auszuwählen. Nach dieser Auswahl sollten anschließend sämtliche Häkchen vor den zu installierenden Paketen gesetzt sein. Durch die Auswahl von Next übernehmen Sie Ihre Auswahl und starten den Installationsvorgang.

Der Installationsvorgang kann schon ein paar Minuten dauern, je nach verwendetem Prozessor. Es ist also nichts schiefgelaufen, wenn Sie etwas warten müssen. Dies liegt daran, dass z. B. der Compiler eine zusätzliche Komponente ist (in diesem Fall ist es der auf Windows portierte GCC-Compiler), die erst einmal eingerichtet werden muss. Dies geschieht aber immer automatisch, und Sie müssen nichts tun außer warten. Wenn also eine Fehlermeldung erscheint, die beispielsweise besagt, dass wichtige Pakete fehlen, dann ist etwas beim Download schiefgelaufen. In diesem Fall sollten Sie einfach Pelles C erneut (zur Not von einer alternativen Quelle) runterladen.

Abbildung 1.4     Am einfachsten ist es, die Installationsoption »Full« zu wählen.

Hinweis zu Code::Blocks

In der letzten Auflage wurde an dieser Stelle Code::Blocks installiert. Es ist nichts dagegen einzuwenden, Code::Blocks zu verwenden (ggf. nach einem Update). Alle Programme in diesem Buch funktionieren auch weiterhin zusammen mit Code::Blocks.

Weil die Installation von Code::Blocks Einsteigern oft Schwierigkeiten gemacht hat, empfehle ich an dieser Stelle nun Pelles C – auch wenn einige Funktionen der C-Standards C18 und C23 noch nicht implementiert wurden.

Falls Sie Pelles C zum ersten Mal einrichten, müssen Sie vor der eigentlichen Installation noch einen Installationsordner angeben. Wenn Sie Pelles C nicht auf einer separaten Festplatte installieren und auch nicht von einem USB-Stick starten wollen, dann können Sie den Zielordner unverändert lassen. Ansonsten können Sie den Zielordner mit browse per Hand auswählen.

Abbildung 1.5     Auswahl des Installationsordners von Pelles C

1.9.2    Ein einfaches C-Projekt mit Pelles C anlegen


Nach der Installation ist Pelles C sofort einsatzbereit. Aber wie starten Sie nun die IDE? Leider kann sich dies von Fall zu Fall unterscheiden, je nachdem, welche Windows-Version Sie benutzen. Unter Windows 7 öffnen Sie die IDE (also die Entwicklungsumgebung, mit der Sie C-Projekte anlegen können) einfach, indem Sie auf das entsprechende Desktop-Icon klicken (dieses müsste automatisch angelegt worden sein). Nun öffnet sich das Fenster der Entwicklungsumgebung, und Sie können neue Projekte anlegen.

Ab Windows 8 wurde jedoch die GUI (also die grafische Bedienoberfläche) umstrukturiert, deshalb erscheinen hier die meisten neuen Programmsymbole im Startmenü an der unteren linken Ecke des Bildschirms, das Sie durch einen Mausklick separat öffnen müssen. Pelles C erscheint als Symbol im Startmenü direkt nach der Installation in der Rubrik zuletzt hinzugefügt. Sie können dieses Symbol danach per Drag and Drop auf den Desktop ziehen, allerdings funktioniert dies nur, wenn Sie auch Administratorrechte oder zumindest die Rechte zum Verändern des Desktop-Bereichs besitzen. Dies ist z. B. auf einem Arbeitsplatzrechner nicht immer der Fall, und es ist Sache Ihres Arbeitgebers oder Ihres Administrators, ob dieser Ihnen die Rechte einräumt, Desktop-Symbole anzulegen.

Starten Sie nun Pelles C. Wenn Sie Pelles C zum ersten Mal ausführen, kann es sein, dass Sie zunächst die Installation des Moduls zur Codevervollständigung bestätigen müssen. Ich empfehle Ihnen, dieses Modul zu installieren, denn dadurch wird Ihr Code schon bei der Eingabe auf Fehler untersucht. Ebenfalls erhalten Sie hierdurch wertvolle Tipps für Einsteiger.

Abbildung 1.6     Das Modul zur Codevervollständigung sollten Sie stets installieren.

Wenn die Codevervollständigung bereits installiert wurde oder Sie ein Update auf eine neuere Version gemacht haben, dann können Sie sofort mit dem Programmieren beginnen. Dies ist ganz einfach: Klicken Sie auf den Text...


Wolf, Jürgen
Jürgen Wolf ist seit über 16 Jahren Autor und seit mehr als 10 Jahren passionierter Digitalfotograf. Seine Buchthemen sind Bildbearbeitung, Fotografie, Webentwicklung, Betriebssysteme und Programmierung. Und egal welches Thema: Bei jedem Buch ist es sein Ziel, auch komplexe Zusammenhänge klar und verständlich zu erklären.

Krooß, René
Dipl.Inform. (FH) der Informatik



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.