Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />
E<strong>in</strong> grösseres Beispiel für <strong>die</strong> Benutzung von dynamischem Speicher:<br />
#<strong>in</strong>clude <br />
#<strong>in</strong>clude <br />
char *TextE<strong>in</strong>lesen(void)<br />
{<br />
char *Text;<br />
char Zeichen;<br />
<strong>in</strong>t Length = 0;<br />
<strong>in</strong>t MaxLength = 100;<br />
}<br />
/* Platz fuer 100 Zeichen reservieren */<br />
/*( + 1 Reserve fuer abschliessende '\0') */<br />
Text = malloc(sizeof(char) * (MaxLength + 1));<br />
if (Text == NULL) {<br />
pr<strong>in</strong>tf("Error, out of memory");<br />
return NULL;<br />
} else {<br />
pr<strong>in</strong>tf("Bitte Text e<strong>in</strong>geben, abschluss mit \n");<br />
Zeichen = getchar();<br />
/* Solange bis gedrueckt wird */<br />
while (Zeichen != '*') {<br />
/* Block erweitern, wenn zu falls kle<strong>in</strong> */<br />
if (Length >= MaxLength) {<br />
Text = realloc(Text, MaxLength+100);<br />
if (Text == NULL) {<br />
pr<strong>in</strong>tf("Error, out of memory");<br />
return NULL;<br />
}<br />
}<br />
/* wurde erweitert */<br />
MaxLength += 100;<br />
/* Zeichen abspeichern */<br />
Text[Length++] = Zeichen;<br />
/* <strong>und</strong> neues Zeichen e<strong>in</strong>lesen */<br />
Zeichen = getchar();<br />
}<br />
Text[Length++] = '\0'; /* Buffer mit '\0' abschliessen */<br />
}<br />
return Text;<br />
<strong>in</strong>t ma<strong>in</strong>(<strong>in</strong>t argc, char*argv[])<br />
{<br />
char *TextBlock;<br />
}<br />
Liest e<strong>in</strong>e beliebige Anzahl Zeichen<br />
e<strong>in</strong>, bis * e<strong>in</strong>gegeben wird <strong>und</strong> gibt<br />
den Text anschliessend wieder aus.<br />
/* Textblock beliebiger groesse e<strong>in</strong>lesen */<br />
TextBlock = TextE<strong>in</strong>lesen();<br />
if (TextBlock != NULL) {<br />
/* ...wieder ausgeben */<br />
puts("Sie haben folgenden Text e<strong>in</strong>gegeben:\n\n");<br />
puts(TextBlock);<br />
/* <strong>und</strong> Speicherblock wieder freigeben */<br />
free(TextBlock);<br />
}<br />
return 0;<br />
Gedruckt am 11.09.2008 13:04:00 Letzte Änderung am: 11. September 2008 Version 2.4, I. Oesch 100/147