Wie habt Ihr C gelernt?
-
DerMaddi schrieb:
C von A bis Z" super zum lernen
LOL
Der Schreibstil des Herrn scheint ja wirklich nicht schlecht zu sein, oder zieht das Buch die Anfänger nur wie die Fliegen an weil es gratis ist?
-
cooky451 schrieb:
DerMaddi schrieb:
C von A bis Z" super zum lernen
LOL
Der Schreibstil des Herrn scheint ja wirklich nicht schlecht zu sein, oder zieht das Buch die Anfänger nur wie die Fliegen an weil es gratis ist?Es gibt glaube ich nichts schlimmeres! J.W Style halt.
-
-lowbyte- schrieb:
cooky451 schrieb:
DerMaddi schrieb:
C von A bis Z" super zum lernen
LOL
Der Schreibstil des Herrn scheint ja wirklich nicht schlecht zu sein, oder zieht das Buch die Anfänger nur wie die Fliegen an weil es gratis ist?Es gibt glaube ich nichts schlimmeres! J.W Style halt.
Also mir wurde es von mehreren empfohlen, aber du hast moeglicherweise Recht cooky, denn ich war zu faul mir n Buch zu kaufen / auszuleihen ^^
Beim Nachschaun in "Linkliste fuer Neulinge" seh ich grade, dass es hier im Forum wohl eh nicht auf volle Zustimmung trifft:alt!!1 schrieb:
OpenBook C von A bis Z von Galileo Computing
Edit by TactX: Das Buch "C von A bis Z" ist hier schon öfters wegen diverser Fehler aufgefallen. Dies sollte man im Hinterkopf haben wenn man das Buch liest und entsprechend kritisch hinterfragen (gilt natürlich für jede Veröffentlichung).
Ich kenn zwar die konkreten Fehler nicht, aber ich konnte bis jetzt alle meine Programme bis zur Zufriedenheit des Compilers fertigstellen ; )
-
Dann warte bis hier Leute posten, die Dir ein paar nette Geschichte über J,W posten...dann wirste verstehen was ich meinte. Ich mag nämlich nicht mehr...
Wenn Du Dich wirklich an alles haltest, was dieser Mann verzapft... dann kannste nicht C programmieren tut mir leid.
-
DerMaddi schrieb:
Ich kenn zwar die konkreten Fehler nicht, aber ich konnte bis jetzt alle meine Programme bis zur Zufriedenheit des Compilers fertigstellen ; )
Ich habe eigentlich kaum etwas aus dem Buch gelesen, aber jemand hat mir mal folgenden Ausschnitt geschickt:
http://openbook.galileocomputing.de/c_von_a_bis_z/012_c_zeiger_006.htm#mj1d0c139ec6125f198a762880b480283fC von A bis Z schrieb:
/* ptr13.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 255 char *eingabe(char *str) { char input[MAX]; printf("Bitte \"%s\" eingeben: ",str); fgets(input, MAX, stdin); return strtok(input, "\n"); } int main(void) { char *ptr; ptr = eingabe("Vorname"); printf("Hallo %s\n", ptr); ptr = eingabe("Nachname"); printf("%s, interssanter Nachname\n", ptr); return EXIT_SUCCESS; }
Abgesehen davon, dass ich die Einrückung nicht mag, main(void) sinnlos ist, MAX eine unangenehm nichtssagende Konstante ist und die Funktion "eingabe" besser einen const char* als Parameter haben sollte, funktioniert strtok() nicht so wie hier gedacht.
Lustigerweise erklärt er genau unter diesem Beispiel den Stack, merkt aber nicht, dass da was nicht stimmt
-
cooky451 schrieb:
Abgesehen davon, dass ich die Einrückung nicht mag
Meinst du, dass du den CodeBlockanfang "{" in eine neue Zeile machst oder was ist da falsch?
cooky451 schrieb:
main(void) sinnlos ist
Punkt fuer dich, mir ehrlich gesagt nie aufgefallen ich schreib idR auch immer nur "int main()" oder zumindest.
cooky451 schrieb:
MAX eine unangenehm nichtssagende Konstante ist
Bei 20 Zeilen Code...
cooky451 schrieb:
und die Funktion "eingabe" besser einen const char* als Parameter haben sollte
2. Punkt fuer dich.
cooky451 schrieb:
funktioniert strtok() nicht so wie hier gedacht
Hier bitte ich um Aufklaerung, die Funktion (habs sie mir grade zum ersten angeguckt cO) und ich seh irgendwie kein Fehler, ich weiss nur das die (unsichere - bufferoverflowgefaehrdete) Funktion gets() ein String ohne "\n" einliest und fgets mit. Das Newline Zeichen kann in dem Text nur ganz am Ende vorkommen, um die Eingabe zu beenden, also muss quasi der ganze String bis zu dem Zeichen zurueckgegeben werden.
Hab ich einen Denkfehler drin oder seh ich den Fehler einfach nur nicht?
Ich hab das Programm compiliert und es hat das gemacht was es sollte.
-
DerMaddi schrieb:
cooky451 schrieb:
main(void) sinnlos ist
Punkt fuer dich, mir ehrlich gesagt nie aufgefallen ich schreib idR auch immer nur "int main()" oder zumindest.
Also zumindest für einen echten C-Compiler macht es einen Unterschied, ob du das
void
schreibst.cooky451 schrieb:
funktioniert strtok() nicht so wie hier gedacht
Hier bitte ich um Aufklaerung, die Funktion (habs sie mir grade zum ersten angeguckt cO) und ich seh irgendwie kein Fehler, ich weiss nur das die (unsichere - bufferoverflowgefaehrdete) Funktion gets() ein String ohne "\n" einliest und fgets mit. Das Newline Zeichen kann in dem Text nur ganz am Ende vorkommen, um die Eingabe zu beenden, also muss quasi der ganze String bis zu dem Zeichen zurueckgegeben werden.
Hab ich einen Denkfehler drin oder seh ich den Fehler einfach nur nicht?
Ich hab das Programm compiliert und es hat das gemacht was es sollte.strtok() verändert den übergebenen String und gibt Zeiger darauf zurück. Und hier liegt das Problem imho nicht in strtok() sondern darin, worauf es angewendet wurde - das übergebene Array liegt in der Funktion eingabe() und wird am Ende des Funktionsaufrufes wieder freigegeben - was danach mit dem Inhalt des Arrays passiert ist Glückssache.
-
DerMaddi schrieb:
Hier bitte ich um Aufklaerung
Lies dir einfach das durch, was er weiter unten schreibt und halte im Hinterkopf, dass strtok() einen Zeiger auf input zurückgibt.
Also zumindest für einen echten C-Compiler macht es einen Unterschied, ob du das void schreibst.
Und sogar im Standard steht es mit void! Das muss ich wohl eindeutig zurückziehen.
Edit:
Ok, im Standard steht irgendwie sowohl int main(), als auch int main(void). Scheint Geschmackssache zu sein.
-
In der Schule
-
noelino schrieb:
In der Schule
Die Frage lautet: Wie, nicht Wo!
-
noelino schrieb:
In der Schule
Haha mein Infolehrer möchte mich nicht unterrichten lassen