c:lib:stdio:*

Diskussionen zu Tutorials, Änderungs- und Erweiterungswünsche
Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

c:lib:stdio:*

Beitrag von Dirty Oerti » So Apr 19, 2009 3:10 pm

Tag :)

Erstmal: Da fehlt ja auch noch einiges, vllcht sollten wir da mal ein bisschen Inhalt reinbringen.

Zweitens: Ich hab mal alle bisherigen Artikel korrigiert.
Die stdio bindet man in C++ nämlich über <cstdio> ein, und nicht über <stdio>, wie vorher drinn stand.
So ist es zumindest bei mir hier auf dem System...ist es bei jemandem anders?

Wäre gut, wenn das auch bei den nächsten Artikeln berücksichtigt wird :)

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

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 » So Apr 19, 2009 3:16 pm

Dirty Oerti hat geschrieben:Erstmal: Da fehlt ja auch noch einiges, vllcht sollten wir da mal ein bisschen Inhalt reinbringen.
Die ist jedenfalls ein sehr guter Kandidat, um als nächstes vervollständigt zu werden, wie auch die stdlib.
Dirty Oerti hat geschrieben:Zweitens: Ich hab mal alle bisherigen Artikel korrigiert.
Die stdio bindet man in C++ nämlich über <cstdio> ein, und nicht über <stdio>, wie vorher drinn stand.
So ist es zumindest bei mir hier auf dem System...ist es bei jemandem anders?
Nicht, wenn es sich um Standard-C++ handelt ^^
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.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: c:lib:stdio:*

Beitrag von Dirty Oerti » So Apr 19, 2009 3:47 pm

Xin hat geschrieben:Nicht, wenn es sich um Standard-C++ handelt ^^
Na was nun?

Code: Alles auswählen

#include <stdio>

int main {
	printf("Ich gebe Text aus und sonst nichts..\n");
	return 0;
}
daniel@linDaniel:~/Desktop/test$ g++ test.cpp -o test
test.cpp:1:17: Fehler: stdio: No such file or directory
test.cpp: In function »int main()«:
test.cpp:5: Fehler: »printf« wurde in diesem Gültigkeitsbereich nicht definiert
daniel@linDaniel:~/Desktop/test$
--------------------------------------------------------------------------------------------

Code: Alles auswählen

#include <cstdio>

int main {
	printf("Ich gebe Text aus und sonst nichts..\n");
	return 0;
}
daniel@linDaniel:~/Desktop/test$ g++ test.cpp -o test
daniel@linDaniel:~/Desktop/test$
--------------------------------------------------------------------------------------------

Und das bei
daniel@linDaniel:~/Desktop/test$ g++ --version
g++ (GCC) 4.2.4 (Ubuntu 4.2.4-1ubuntu3)
Copyright (C) 2007 Free Software Foundation, Inc.
Dies ist freie Software; die Kopierbedingungen stehen in den Quellen. Es
gibt KEINE Garantie; auch nicht für MARKTGÄNGIGKEIT oder FÜR SPEZIELLE ZWECKE.

daniel@linDaniel:~/Desktop/test$
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

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 » So Apr 19, 2009 4:39 pm

Dirty Oerti hat geschrieben:
Xin hat geschrieben:Nicht, wenn es sich um Standard-C++ handelt ^^
Na was nun?

Code: Alles auswählen

#include <stdio>

int main {
	printf("Ich gebe Text aus und sonst nichts..\n");
	return 0;
}
daniel@linDaniel:~/Desktop/test$ g++ test.cpp -o test
test.cpp:1:17: Fehler: stdio: No such file or directory
test.cpp: In function »int main()«:
test.cpp:5: Fehler: »printf« wurde in diesem Gültigkeitsbereich nicht definiert
daniel@linDaniel:~/Desktop/test$
Das ist korrekt. Die Datei heißt entweder <stdio.h> oder <cstdio>
Im Falle von cstdio sollte printf aber im Namensraum std liegen!?
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.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: c:lib:stdio:*

Beitrag von Dirty Oerti » So Apr 19, 2009 5:18 pm

Xin hat geschrieben: Das ist korrekt. Die Datei heißt entweder <stdio.h> oder <cstdio>
Gut :)
Xin hat geschrieben:Im Falle von cstdio sollte printf aber im Namensraum std liegen!?
Wäre eigentlich das logischste...
Scheint aber nicht so zu sein?
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: c:lib:stdio:*

Beitrag von fat-lobyte » Mo Apr 20, 2009 8:45 am

Dirty Oerti hat geschrieben:
Xin hat geschrieben: Das ist korrekt. Die Datei heißt entweder <stdio.h> oder <cstdio>
Gut :)
Xin hat geschrieben:Im Falle von cstdio sollte printf aber im Namensraum std liegen!?
Wäre eigentlich das logischste...
Scheint aber nicht so zu sein?
Doch.
Die meisten C-Header in C++ inkludieren die originalen C- Header und importieren die Funktionen in den std namespace. Damit sind die Funktionen sowohl im globalen als auch im std namespace.
Sieht ungefähr so aus:

Code: Alles auswählen

#include <stdio.h>

namespace std
{
    using fprintf(...);
    using printf(...);
    using fopen(...);
    using fread(...);
    using fwrite(...);
}
Oder so ähnlich...

Der Standard sagt folgendes:
17.1.2.4 § 4 hat geschrieben: [...], the contents of each header cname shall be the same as that of the
corresponding header name.h, as specified in ISO/IEC 9899:1990 Programming Languages C (Clause 7),
or ISO/IEC:1990 Programming Languages [...],, as appropriate,
as if by inclusion. In the C++ Standard Library, however, the declarations and definitions (except for names
which are defined as macros in C) are within namespace scope (3.3.5) of the namespace std.
Haters gonna hate, potatoes gonna potate.

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 » So Dez 19, 2010 4:01 pm

Dirty Oerti hat geschrieben:Tag :)

Erstmal: Da fehlt ja auch noch einiges, vllcht sollten wir da mal ein bisschen Inhalt reinbringen.
Jetzt - knapp 1 1/2 Jahre später - sollte es komplett sein.
Dirty Oerti hat geschrieben:Zweitens: Ich hab mal alle bisherigen Artikel korrigiert.
Ich gehe davon aus, dass noch reichlich Fehler drin sind. Stellen, an denen der falsche Funktionsname steht, ich habe auch eine vorhandene Seite neu geschrieben, weil sie dem Standard nicht entsprach.

Ich denke, ich habe die Quelltexte soweit halbwegs getestet - trotzdem wäre es gut, wenn es jemand nochmal testen würde - eventuell auf einem Windows-System.
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 » So Dez 19, 2010 9:20 pm

So... ich hab die Artikel jetzt auch noch mal geprüft. Ein paar Anmerkungen/Fragen:
* fflush() hat keinen Eintrag auf der Übersichtsseite, aber in der Sidebar.
* Wann werden Klammern nach Funktionsnamen verwendet?
* Aus set(v)buf:
stdin, stdout und stderr sind ohne Buffer ausgelegt, um Ausgaben sofort an die Konsole liefern zu können.
Ich bin mir ziemlich sicher, dass die zeilengepuffert sind...
* Der Code-Stil sollte vereinheitlicht werden, vielleicht gleich mit den Dedupe-Regeln.
* return EXIT_SUCCESS/EXIT_FAILURE oder return 0/1?
* Werden unter "siehe auch" nur ähnliche Funkionen verwendet, oder prinzipiell alle, die auch im Beispiel vorkommen?
* Englische oder deutsche Bezeichnungen? (Puffer / Buffer, Datei / File, ...)
* Absolute oder relative Namespaces? Eigentlich egal, aber einheitlich sollte es sein finde ich.
* Funktionen, Header und Variablen sind nur teilweise mit Wiki-Syntax hervorgehoben.
* Ist es wirklich eine Fehlerquelle falsche ASCII-Werte zu übergeben?
* In ein paar Beispielen:

Code: Alles auswählen

&string[0]   // Adresse des ersten Buchstabens
Warum nicht einfach:

Code: Alles auswählen

string
?
* Ausgaben wurden bis jetzt immer durch doppelte Leerzeichen anstatt <code>-Tags dargestellt.
* 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.

Die Beispiele sollten wir unbedingt nochmal alle prüfen, da hab ich nämlich einiges ausgebessert...

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 11:14 am

nufan hat geschrieben:So... ich hab die Artikel jetzt auch noch mal geprüft. Ein paar Anmerkungen/Fragen:
* fflush() hat keinen Eintrag auf der Übersichtsseite, aber in der Sidebar.
fflush hinzugefügt.
nufan hat geschrieben:* Wann werden Klammern nach Funktionsnamen verwendet?
Im Idealfall immer? Schon alleine, um eine Konsistenz diesbezüglich zu haben.
nufan hat geschrieben:* Aus set(v)buf:
stdin, stdout und stderr sind ohne Buffer ausgelegt, um Ausgaben sofort an die Konsole liefern zu können.
Ich bin mir ziemlich sicher, dass die zeilengepuffert sind...
Das sollten wir dann nochmal prüfen - gerade bei stdout vermute ich, dass Du da recht hast.
nufan hat geschrieben: * Der Code-Stil sollte vereinheitlicht werden, vielleicht gleich mit den Dedupe-Regeln.
* return EXIT_SUCCESS/EXIT_FAILURE oder return 0/1?
return EXIT_SUCCESS/EXIT_FAILURE.
nufan hat geschrieben: * Werden unter "siehe auch" nur ähnliche Funkionen verwendet, oder prinzipiell alle, die auch im Beispiel vorkommen?
Im Prinzip alles, was mit der Funktion zu tun haben könnte. Die Funktionen im Beispielprogramm können weggelassen werden, wenn sie nur vorbereitenden oder nachbereitenden Charakter in dem Beispiel haben. Ein printf() als Fehlermeldung bei fopen() dient dem Beispiel, aber ist jetzt nicht wichtig, wenn man fopen() verstehen möchte.
nufan hat geschrieben: * Englische oder deutsche Bezeichnungen? (Puffer / Buffer, Datei / File, ...)
Im Quellcode englisch, im Text bevorzugt Deutsch. Puffer und Buffer... das fiel mir schon beim Schreiben auf, dass ich mich da vermutlich ziemlich verzausel...
nufan hat geschrieben: * Absolute oder relative Namespaces? Eigentlich egal, aber einheitlich sollte es sein finde ich.
Haben wir Namespaces? Oder meinst Du im Wiki?
Relativ, wenn wir im gleichen Namespace bleiben, damit der Namespace umziehen kann, ohne dass man alle Links ändern muss.
Absolut, wenn man den Namespace verlässt.
nufan hat geschrieben: * Funktionen, Header und Variablen sind nur teilweise mit Wiki-Syntax hervorgehoben.
Teile aus dem Quelltext sollten mit ''Symbol'' hervorgehoben werden.
nufan hat geschrieben:* Ist es wirklich eine Fehlerquelle falsche ASCII-Werte zu übergeben?
Wo?
nufan hat geschrieben:* In ein paar Beispielen:

Code: Alles auswählen

&string[0]   // Adresse des ersten Buchstabens
Warum nicht einfach:

Code: Alles auswählen

string
?
Wenn ich das richtig zuordne, geht es hier um scanf(). Hier wollte ich betonen, dass es sich um die Adresse einer Variablen handelt. Das ist bei "string" auch gegeben, aber ich wollte hier eine Vereinheitlichung zu &intergerVar haben.

Das kann man vielleicht besser dazuschreiben...
nufan hat geschrieben:* Ausgaben wurden bis jetzt immer durch doppelte Leerzeichen anstatt <code>-Tags dargestellt.
Kommt derzeit auf's selbe hinaus. Ich glaube, dafür legen wir mal <console>...</console> an.
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.
nufan hat geschrieben:Die Beispiele sollten wir unbedingt nochmal alle prüfen, da hab ich nämlich einiges ausgebessert...
Ich hoffe, das meiste getestet zu haben, aber ich das wollte ich nicht umsonst nochmal verifiziert haben, da "das meiste" eben nicht "alles" ist.


Lange und gute Liste. *Daumen hoch*!
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:07 pm

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.
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 ^^
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.

Antworten