c:lib:stdio:*

Diskussionen zu Tutorials, Änderungs- und Erweiterungswünsche
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: c:lib:stdio:*

Beitrag von Xin » Mo Dez 20, 2010 12:14 pm

nufan hat geschrieben:
Xin hat geschrieben:
nufan hat geschrieben:* Wann werden Klammern nach Funktionsnamen verwendet?
Im Idealfall immer? Schon alleine, um eine Konsistenz diesbezüglich zu haben.
Mir ist nur aufgefallen, dass sie in der "Einleitung" ("xyz ist in der stdio... ") praktisch nie verwendet werden.
Das wollte ich auch mal ändern.
Problem ist halt, dass man vieles einfach nur kopiert. Return Value - ohne Anführungzeichen, mit einer Leerzeile Abstand zu den Parametern... die ganzen Seiten müssen noch standardisiert werden.
nufan hat geschrieben:
Xin hat geschrieben:
nufan hat geschrieben:* Ist es wirklich eine Fehlerquelle falsche ASCII-Werte zu übergeben?
Wo?
http://www.proggen.org/doku.php?id=c:lib:stdio:putchar
Ja, ich weiß, dass ich das geschrieben habe ^^
Warum sollte man sich auf ASCII-Zeichen beschränken? Wenn man in einen Binärstream schreibt, kann man da ja reinpacken, was man will.
nufan hat geschrieben:
Xin hat geschrieben:
nufan hat geschrieben:* Ist es möglich durch die <code>-Tags hervorgehobene Elemente direkt mit der proggen.org-Referenz zu verlinken? Bei der Verwendung von <code cpp-qt>-Tags werden z.B. alle Typen zu Links auf die Qt-Referenz.
Soweit ich weiß nicht.
Vielleicht hilft das:
http://qbnz.com/highlighter/geshi-doc.html#keyword-urls
Wobei ich nicht sicher bin, wie das mit den Wiki-Namespaces funktionieren soll.
Beschreib das Problem mal genauer im Projekt 'proggen.org'.
Dort kann ich mit dem Wiki machen, was ich will. Nachteil - ich will noch viel und hab noch wenig...
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: c:lib:stdio:*

Beitrag von nufan » Mo Dez 20, 2010 12:35 pm

Xin hat geschrieben:
nufan hat geschrieben:http://www.proggen.org/doku.php?id=c:lib:stdio:putchar
Ja, ich weiß, dass ich das geschrieben habe ^^
Warum sollte man sich auf ASCII-Zeichen beschränken? Wenn man in einen Binärstream schreibt, kann man da ja reinpacken, was man will.
Fehlerquelle beseitigt ^^
Xin hat geschrieben:
nufan hat geschrieben:Vielleicht hilft das:
http://qbnz.com/highlighter/geshi-doc.html#keyword-urls
Wobei ich nicht sicher bin, wie das mit den Wiki-Namespaces funktionieren soll.
Beschreib das Problem mal genauer im Projekt 'proggen.org'.
Dort kann ich mit dem Wiki machen, was ich will. Nachteil - ich will noch viel und hab noch wenig...
Ok, vielleicht installiere ich bei Gelegenheit selbst DokuWiki und spiel mal damit herum.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: c:lib:stdio:*

Beitrag von Xin » Mo Dez 20, 2010 1:13 pm

Gehst Du die längere Liste selbst noch an?
Ich werde - wenn die StdLib fertig ist - da auch nochmal komplett drüber gehen, bevor ich einen Link in die Wikipedia setze.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: c:lib:stdio:*

Beitrag von nufan » Mo Dez 20, 2010 1:43 pm

Xin hat geschrieben:Gehst Du die längere Liste selbst noch an?
Ja, ich werde das nach mal alles prüfen. Aber ich weiß nicht, ob ich auch für alle Beispiele Zeit habe...
nufan hat geschrieben:Ok, vielleicht installiere ich bei Gelegenheit selbst DokuWiki und spiel mal damit herum.
Gesagt - getan ^^
Ich mir mal die Konfiguration von cpp-qt angesehen und leicht abgeändert.
Folgender Code:

Code: Alles auswählen

<code cpp-qt>
#include <stdio.h>

int main(int argc, char *argv[])
{
  printf("<- klick mich!");
  return 0;
}
</code>
Verlinkt "printf" jetzt auf http://proggen.org/doku.php?id=c:lib:stdio:printf :)
Die geshi-Schlüsselwörter sind in Gruppen (PHP-Arrays) eingeteilt, also müssten wir jede Bibliothek in eine eigene Gruppe geben. Zurzeit hab ich einfach alle Standard-Funktionen nach c:lib:stdio:{FNAME} verlinkt, was natürlich nicht für alle korrekt ist. Gleiches könnte man ja auch für Header machen. Aber ich bin noch nicht dahinter gekommen wie ich ein eigenes Schema festlegen kann, also hab ich bestehende verändert.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: c:lib:stdio:*

Beitrag von Xin » Mo Dez 20, 2010 1:52 pm

nufan hat geschrieben:
Xin hat geschrieben:Gehst Du die längere Liste selbst noch an?
Ja, ich werde das nach mal alles prüfen. Aber ich weiß nicht, ob ich auch für alle Beispiele Zeit habe...
Rausnehmen, kompilieren, gucken, ob das Ergebnis mit der Beschreibung übereinstimmt.

Mache ich aber wie gesagt auch noch, bevor ich den Link zu Wikipedia trage.
nufan hat geschrieben:Verlinkt "printf" jetzt auf http://proggen.org/doku.php?id=c:lib:stdio:printf :)
Die geshi-Schlüsselwörter sind in Gruppen (PHP-Arrays) eingeteilt, also müssten wir jede Bibliothek in eine eigene Gruppe geben. Zurzeit hab ich einfach alle Standard-Funktionen nach c:lib:stdio:{FNAME} verlinkt, was natürlich nicht für alle korrekt ist. Gleiches könnte man ja auch für Header machen. Aber ich bin noch nicht dahinter gekommen wie ich ein eigenes Schema festlegen kann, also hab ich bestehende verändert.
Wir können die Tage mal per Skype telefonieren. Wenn das schnell machbar ist, können wir das auf dem Test-Server vorbereiten und beim nächsten Update von proggen.org rüberspielen.

Ansonsten will ich mich wieder mehr um das neue CMS kümmern.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: c:lib:stdio:*

Beitrag von nufan » Mo Dez 20, 2010 8:19 pm

Xin hat geschrieben:
nufan hat geschrieben:
Xin hat geschrieben:Gehst Du die längere Liste selbst noch an?
Ja, ich werde das nach mal alles prüfen. Aber ich weiß nicht, ob ich auch für alle Beispiele Zeit habe...
Rausnehmen, kompilieren, gucken, ob das Ergebnis mit der Beschreibung übereinstimmt.

Mache ich aber wie gesagt auch noch, bevor ich den Link zu Wikipedia trage.
Zumindest den Syntax kann man mit folgendem Skript prüfen:

Code: Alles auswählen

#!/usr/bin/env perl
use strict;
use HTML::Entities;
use LWP::Simple;

my %data;

foreach my $ns (@ARGV) {
    foreach(split "\n", get("http://www.proggen.org/doku.php?id=" . $ns . ":start&do=index")) {
        if(/title=\"$ns:(.+?)\"/) {
            $data{$ns}{$1} = &extractCode(HTML::Entities::decode(get("http://proggen.org/doku.php?id=$ns:$1&do=edit&rev=")));
        }
    }
}

&compileCode();
unlink "main.o";
unlink "main.cpp";


sub compileCode {
    foreach (keys %data) {
        my %ns = %{$data{$_}};
        foreach my $code (keys %ns) {
            if(defined $ns{$code}) {
                open my $file, ">main.cpp" or die "Error creating file: $!\n";
                print $file $ns{$code};
                close $file;
                print "Compiling $_:$code\n";
                system "g++ -c main.cpp -Wall";
                print "\n";
            }
        }
    }
}

sub extractCode {
    my ($html, $found, $example, $code) = (shift, 0, 0, "");
    foreach(split "\n", $html) {
        if(/===== Beispiel =====/) {
            $example = 1;
        }
        elsif($example and /\<code(.*?)\>(.*?)/) {
            $code = $2;
            $found = 1;
        }
        elsif($found and /(.*?)<\/code>/) {
            return ($code . $1);
        }
        elsif($found) {
            $code .= $_;
        }
    }
    return undef;
}
Aufruf:

Code: Alles auswählen

$ perl examplechecker.pl c:lib:stdio
Ausgabe:

Code: Alles auswählen

Compiling c:lib:stdio:fflush

Compiling c:lib:stdio:fgets
main.cpp: In function ‘int main()’:
main.cpp:11: warning: format ‘%x’ expects type ‘unsigned int’, but argument 2 has type ‘char*’
main.cpp:12: warning: format ‘%x’ expects type ‘unsigned int’, but argument 2 has type ‘char*’
main.cpp:13: warning: format ‘%x’ expects type ‘unsigned int’, but argument 2 has type ‘char*’

Compiling c:lib:stdio:remove

Compiling c:lib:stdio:setvbuf

Compiling c:lib:stdio:ftell

Compiling c:lib:stdio:vfprintf

Compiling c:lib:stdio:vsprintf
main.cpp: In function ‘int error(const char*, ...)’:
main.cpp:16: error: ‘strerr’ was not declared in this scope

Compiling c:lib:stdio:sscanf

Compiling c:lib:stdio:getc

Compiling c:lib:stdio:rename
main.cpp: In function ‘int main()’:
main.cpp:9: error: ‘oldname’ was not declared in this scope
main.cpp:9: error: ‘newname’ was not declared in this scope

Compiling c:lib:stdio:fopen
main.cpp: In function ‘int main()’:
main.cpp:8: error: ‘EXIT_SUCCESS’ was not declared in this scope

Compiling c:lib:stdio:clearerr

Compiling c:lib:stdio:fclose

Compiling c:lib:stdio:ungetc

Compiling c:lib:stdio:setbuf

Compiling c:lib:stdio:putchar

Compiling c:lib:stdio:fsetpos

Compiling c:lib:stdio:puts

Compiling c:lib:stdio:ferror

Compiling c:lib:stdio:fseek

Compiling c:lib:stdio:fwrite

Compiling c:lib:stdio:tmpfile

Compiling c:lib:stdio:tmpnam

Compiling c:lib:stdio:scanf

Compiling c:lib:stdio:vprintf

Compiling c:lib:stdio:feof

Compiling c:lib:stdio:printf

Compiling c:lib:stdio:sprintf

Compiling c:lib:stdio:fprintf

Compiling c:lib:stdio:fgetpos

Compiling c:lib:stdio:putc

Compiling c:lib:stdio:fscanf

Compiling c:lib:stdio:getchar

Compiling c:lib:stdio:perror

Compiling c:lib:stdio:gets
main.cpp: In function ‘int main()’:
main.cpp:11: warning: format ‘%x’ expects type ‘unsigned int’, but argument 2 has type ‘char*’
main.cpp:12: warning: format ‘%x’ expects type ‘unsigned int’, but argument 2 has type ‘char*’
main.cpp:13: warning: format ‘%x’ expects type ‘unsigned int’, but argument 2 has type ‘char*’

Compiling c:lib:stdio:fread

Compiling c:lib:stdio:fgetc

Compiling c:lib:stdio:freopen

Compiling c:lib:stdio:rewind

Compiling c:lib:stdio:fputc

Compiling c:lib:stdio:fputs

So, und weil das ganze jetzt überhaupt keine Aussage über die Sinnhaftigkeit des Codes gibt, werde ich alles nochmal per Hand durchgehn ^^

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: c:lib:stdio:*

Beitrag von Xin » Mo Dez 20, 2010 10:55 pm

Dafür müsste es bei jeder Änderung laufen.

Und es darf nur einmal Laufen, denn der Link zu printf darf nicht zu einem Link werden ^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: c:lib:stdio:*

Beitrag von nufan » Mo Dez 20, 2010 10:59 pm

Xin hat geschrieben:Dafür müsste es bei jeder Änderung laufen.

Und es darf nur einmal Laufen, denn der Link zu printf darf nicht zu einem Link werden ^
Hm... naja egal, ich bin jetzt alles durchgegangen und habs selbst kompiliert ^^

Antworten