Forum: C-Programmieren
Moderatoren: juergen, Martin ConradThema: Durch-Reich-Programm
Durch-Reich-Programm
tasiwaiar am 26.07.2010 um 14:21
Ich bin Linux-Admin und hab mich hier registriert um mein Durchreich-Programm zu präsentieren.
Ich benutze es zum Nutzen der Bash-Pipe zeichen ohne Speziellen Zweck. Besonders in Shell-Scipten hat es sich bewährt!
Hier nun der Quellcode. Ich denke, den muss ich euch C-Profis nicht erklären:
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Durchreich-Funktionalität (gedacht zum Einsatzt in Pipes)
Dateiname: durchreich.c
Autor: Tsi'Vair
Datum: 16.07.2010
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
// includes
#include <stdio.h> // I/O
#include <malloc.h> // Pufferverwaltung
main (void) // main Anfang
{
/* * * * * * * * * * * * * * * * * * *
1. DEKLARATIONEN
* * * * * * * * * * * * * * * * * * */
char* text = malloc(1024) ; // Erzeugung eines Puffers in Höhe von 1KB
int s = 1024 ; // Puffergröße
int n = 0 ; // Aktuelles Zeichen
int c ; // Zeichen
int i ; // Schleifenindex
/* * * * * * * * * * * * * * * * * * *
2. EINLESEN
* * * * * * * * * * * * * * * * * * */
while ( ( c = getc(stdin) ) != EOF ) // Zeichenweseses einlesen wenn kein EOF
{
text[n++] = c; // Zeichen speichern
if ( n >= s ) // Wenn Puffer voll ...
{
text = realloc (text, s + 1024) ; // Dann Puffer vergrößern
s += 1024 ; // und Größe anpassen
}
} // Auslesen Ende
/* * * * * * * * * * * * * * * * * * *
3. AUSGEBEN
* * * * * * * * * * * * * * * * * * */
putc('\n', stdout); // Eine Trennlinie
putc('\n', stdout); // und noch eine
for ( i = 0; i < n; i++) // Jetzt alle Zeichen
{
putc(text[i], stdout); // ausgeben
}
putc('\n', stdout); // mit einem Zeilenumbruch
free(text); // Speicher freigeben
} // main Ende NICHT LÖSCHEN
So, was haltet ihr davon?
Re: Durch-Reich-Programm
Martin Conrad (webmaster) am 26.07.2010 um 16:51
Mir erschliesst sich der Sinn für das Progamm nicht.
Zudem isses gefährlich, du prüfst nicht, ob du Speicher wirklich bekommst, aber schreibst in den Bereich. Wenn int am Ende ist. explodiert das Programm.
Bis denne
Martin
--
0xC0FFEE
Re: Durch-Reich-Programm
broesel (webmaster) am 26.07.2010 um 20:47
#include <stdio.h>
int main(void)
{
int c;
while ((c = fgetc(stdin)) != EOF) {
putc(c, stdout);
}
return 0;
}
Zum anderen gibt es das Programm bereits in jeder Linux-Distribution: es heißt "cat".
Gruss,
Philip
--
The C Programming Quiz
- bitte Fragen einreichen :)
Re: Durch-Reich-Programm
Martin Conrad (webmaster) am 27.07.2010 um 06:49
Zitat:
Zum anderen gibt es das Programm bereits in jeder Linux-Distribution: es heißt "cat".![]()
Die ganz Eiligen lösen sowas über Devices:
echo Huhu > /dev/stdout
Bis denne
Martin
--
0xC0FFEE
[EDIT] - Re: Durch-Reich-Programm
tasiwaiar am 27.07.2010 um 13:13
2. @broesel: Dein Programm ist zwar eine Lösung, aber Ich wollte erst nach EOF das gesamte Dokument ausgeben.
Für zeilenweises einlesen gibt es cat, sicher. Aber Ich wollte es nunmal Dokumentweise lösen. Außerdem ist es für den Einsatzt in Pipes (z. B. vor sed) gedacht.
PS: Es ist mein erstes Produktiv-(Nicht-Spiel-)Programm!
Also nicht ganz sooo ernstnehemen, das mit dem Speicher
!
