Micky-Maus-C-Rätsel...
Geizhals » Forum » Programmierung » Micky-Maus-C-Rätsel... (43 Beiträge, 501 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Micky-Maus-C-Rätsel...
24.05.2006, 21:50:46
Hi !

Mal aus Spaß:
Gegeben sei die Aufgabe, eine sichere und stabile logfunktion zu schreiben...
Dazu gäbe es einen globalen Filehandle zur logdatei, an die ein Text angefügt werden soll... Zusätzlich soll der Text immer auf den Fehlerkanal ausgegeben werden.

Otto-Normaldau bemüht sich und schreibt folgendes:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>


int logfd;

static void protokoll(int *fd,char *text)
{
        int len=strlen(text);

        if (*fd==0) {
                if ((*fd=open("meinlog.txt",O_WRONLY|O_CREAT|O_APPEND,S_IRWXU))==-1) {
                        perror("open");
                        exit(EXIT_FAILURE);
                }
        }

        if (fprintf(stderr,text)==-1) {
                perror("fprintf");
                exit(EXIT_FAILURE);
        }

        if (write(*fd,text,len)!=len) {
                perror("write");
                exit(EXIT_FAILURE);
        }
}

int main()
{
        protokoll(&logfd,"test");

        /*
         * ...
         */
        close (logfd);
        return(EXIT_SUCCESS);
}



Paßt das so - oder welche schweren Fehler hat er begangen ? >:-)

nun ein ein bißchen schwereres Rätsel:
Gegeben sein wieder ein Code-Snippet

int i;
int i;

Frage: Ist das in C erlaubt ? in C++ ? und... WARUM ? |-D

24.05.2006, 21:51 Uhr - Editiert von gepeinigter_aon_neukunde, alte Version: hier
Antworten PM Übersicht Chronologisch
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung