Home Fachinformatiker Programmierung

Einführung C

C-Programmierung unter Unix/Linux

 

Kommentar

Ein Kommentar wird beim Übersetzen nicht beachtet. Ein Kommentar beginnt mit /* und endet mit */. Er kann sich über mehrere Zeilen erstrecken, darf aber nicht selbst wieder einen Kommentar enthalten.

 

#include<Dateiname> Präprozessordirektive zur Einbindung einer Informationsdatei (Bibliothek z. B. stdio.h), die es ermöglicht, bestimmte Funktionen( z.B. printf(), scanf() )dieser Datei im Programm zu verwenden.
main() Beginn des Hauptprogrammes
return<Wert> Gibt einen Wert zurück (Ansi-C: ist für die Funktion der Datentyp void vorgesehen, so kann auf return verzichtet werden).
{ } Begrenzugen eines Programmblockes
; Abschließendes Zeichen für Deklarations-, Defintions- und Anweisungzeilen.

 

printf

Funktion zur Ausgabe von Text und Variablen > standardmäßig am Bildschirm.

Sonderzeichen

\nZeilenvorschub, entspricht RETURN bei der Tastatureingabe
\tTabulator, auf dem Bildschirm wird ein Tabulator-Sprung gemacht
\r Carrige Return, unter UNIX irrelevant. Unter DOS besteht ein Zeilenende aus
\fIrrelevant für Bildschirm und Tastatur, bewirkt unter einer Druckausgabe einen Seitenvorschub (formfeed)
\0NULL, wird intern für eine String-Endmarkierung verwendet. wird manchmal auch bei Druckersequenzen bentzt.
\\Backlash, erzeigt ein \ auf dem Bildschirm
\'A Erzeugt ein Hochkomma auf dem Bildschirm
\"Erzeugt Anführungszeichen, die ja sonst schwerlich darstellbar sind

 

scanf

Funktion zur Eingabe von Variablen > standardmäßig über Tastatur

Formatelemente in C für scanf() und printf() verwendbar:

%dvorzeichenbehaftete Ganzzahlen (dezimal)
%ivorzeichenbehaftete Ganzzahlen (dezimal)
%uvorzeichenlose Ganzzahlen (dezimal)
%ovorzeichenlose Ganzzahlen (oktal)
%xvorzeichenlose Ganzzahlen (hexadezimal)
%fFließkommazahl %e Fließkommazahl (exponentiell)
%cein Zeichen
%seine Zeichenkette

 

Grundlegende Variablentypen

int- 32 768 ... 32 767 (16 Bit Maschinen) - 2 147 483 648 ... 2 147 483 647 (32 Bit Maschinen)
unsigned int0 ... 65 535 (16 Bit Maschinen) 0 ... 4 294 967 295 (32 Bit Maschinen)
short int- 32 768 ... 32 767
unsigned short int0 ... 65 535
long int- 2 147 483 648 ... 2 147 483 647
unsigned long int0... 4 294 967 295
charalle ASCII-Zeichen , das sind alle Zeichen, die man auf dem Bildschirm darstellen kann
unsigned charalle ASCII-Zeichen
floatfloat -10 ^38 ... 10 ^38
double-10 ^308 ... 10 ^308

 

Bedingungen und Vergleiche

== gleich beide Bedingungen sind gleich
!= ungleich / nicht gleich
beide Bedingungen sind nicht gleich
> größer
die erste Bedingung ist größer als der zweite
>= größer oder gleich
die erste Bedingung ist größer oder gleich der zweiten
< kleiner
die erste Bedingung ist kleiner als die zweite
<= kleiner oder gleich
die erste Bedingung ist kleiner oder gleich der zweiten
&& logisches und
beide Bedingungen müssen wahr sein
|| logisches oder
eine der Bedingungen muss wahr sein
! Negation
die folgende Bedingung muss falsch sein

 

Rangfolge der Opertoren

<, <=, >, >=hat Vorrang vor ==, != hat Vorrang&&, ||

 

 

Schleifen, Abfragen usw.

If- Abfrage

Trifft die Bedingung zu, so wird die Anweisung ausgeführt. Es darf im Ja-Zweig nur eine Anweisung stehen. Sollten dort mehrere ausgeführt werden, müssen sie zu einer Verbundanweisung zusammengefasst werden

if(Bedingung)

{

Anweisung;

}/* bei einer Anweisung kann die geschweifte Klammer weggelassen werden*/

oder

if(Bedingung)

{

Anweisung 1;
Anweisung 2;

}/*Verbundanweisung*/

 

 

Zweifach Auswahl

Ist die Bedingung erfüllt, wird Anweisung 1 ausgefüAhrt sonst die Anweisung2 im else Zweig

 

if(Bedingung)

{

Anweisung1;

}

else

{

Anweisung2;

}

 

Fallunterscheidung

für mehrere Anweisungen

switch

{

case Fall1 : Anweisung1;

break;

case Fall2 : Anweisung2;

break;

case

Fall3 : Anweisung3;

break;

default: Anweisung;

}

default nur wenn kein case zutrifft

break:

Der Befehl dient zum Verlassen des Schleifenkörpers, in dem break ausgeführt wird, bzw. der switch-Anweisung

 

 

while-Schleife (Kopfgesteuerte Schleife)

Hinter der Bedingung kann nur eine Anweisung formuliert werden. Diese Anweisung wird solange wiederholt, wie die Bedingung zutrifft. Die Anweisung nach der Bedingung kann allerdings eine Verbandanweisung sein. Mehrere Anweisungen können mit Hilfe der geschweiften Klammer zu einem Block zusammen gefasst werden (Verbandanweisung)

Die Bedingung sollte sich innerhalb des Anweisungsblocks auf der while-Schleife verändern, d. h. die Schleife muß die Möglichkeit einer Beendigung haben.

while (Bedingung)

{

Anweisung1;

Anweisung2;

}

 

 

do-while Schleife ( fußgesteuerte Schleife)

Die Bedingung sollte sich innerhalb des Anweisungsblocks auf der while-Schleife verändern, d. h. die Schleife muß die Möglichkeit einer Beendigung haben.
Die do-while-Schleife wird mindestens einmal durchlaufen, hier wichtig das Semikolon
Der Schleifenrumpf wird wiederholt, wenn die Bedingung erfüllt ist.

do

{

Anweisungsblock;

}

while (Bedingung);

 

 

for-Schleife (Zählschleife)

Bei einer for-Schleife wird zuerst die InitialisieArung abgearbeitet. Solange die Bedingung wahr ist, wird der Schleifenkörper und anschließend die Anweisung ausgeführt. Danach wird wieder die Bedingung geprüft, und so weiter.

for (Variable = Anfangswert; Variablenzählgrenzbedingung; Schrittweite/Zählrichtung)

{

Anweisungsblock;

}

 

 

Der Umwandlungsoperator

Bsp.:

int i;

float f; i = (int) f;

Der Umwandlungspoerator (cast-operator) wandelt den Wert von f in ganzzahlig (int).
Nachkommastellen werden abgeschnitten, f selbst bleibt float.

 

Datenoperationen (der folgende Teil stammt von einem Kollegen)

Datenkanal öffnen

Int.variable = open("name", option, rechte);

int.variable Integervariable die als Filediskriptor verwendet wird
name Name der Datei auf die der Datenkanal verweisen soll

option

 

 

 

 

 

 

Was wird auf dem Datenkanal gemacht O_RDONLY oder 0 nur lesen

O_WRONLY oder 1 nur schreiben

O_RDWR oder 2 lesen und schreiben O_CREAT oder 100 erstellen


O_AP anhängen O_CREAT+RDWR eine nicht vorhandene Datei wird erstellt

Beispiel:

Ifd = open ("datei", O_RDWR, 0666); oder Ifd = open ("datei", 2, 0666);

rechte

 

 

 

0xxx

die Null wird als FLAG für das Oktalformat benutzt.

xxx vergibt die Rechte für die Datei

Bei Lesevorgängen kann die Angabe der Rechte entfallen.

 

Daten auf den Datenkanal schreiben

int.rückgabevariable = write (Filediskriptor, variable, anzahl der Bytes);

int.rückgabevariable

A

 

 

 

 

integer Variable in die der Rückgabewert der Routine geliefert wird.
Entweder die Zahl der geschriebenen Bytes oder –1 für Fehler
Filediskriptor siehe Daten Kanal öffnen

Variable

 

Variable, deren Inhalt gespeichert werden soll

Anzahl der Bytes

 

 

 

 

Wie viele Bytes sollen geschrieben werden

Der Datenzeiger bestimmt den Anfangspunkt, ab dem geschrieben wird (siehe Datenzeiger setzen)

 

Daten auf dem Datenkanal lesen

int.rückgabevariable = read (Filediskriptor, variable, anzahl der Bytes);

int.rückgabevariable

 

 

 

 

integer Variable in die der Rückgabewert der Routine geliefert wird. Entweder die Zahl der gelesenen Bytes oder –1 für Fehler
Filediskriptor siehe Daten Kanal öffnen

Variable

 

Variable, deren Inhalt durch die gelesenen Bytes ersetzt werden soll

Anzahl der Bytes

 

 

 

Wie viele Bytes sollen gelesen werden

Der Datenzeiger bestimmt den Anfangspunkt, ab dem geschrieben wird (siehe Datenzeiger setzen)

 

Datenzeiger setzen

lseek (filediskriptor, ipos, Startpunkt);

Filediskriptor siehe Daten Kanal öffnen
ipos integer Wert, der mit dem Startwert zusammen die Position des Datenzeigers ergibt

Startpunkt

 

 

0 Anfang der Datei

1 Aktuelle Position des Datenzeigers

2 Ende der Datei

 

Quelle:
InBit, Paderborn

Jetzt lerne ich C Markt&Technik


© Petra Budde creative IT work