String erstellen
-
Es ist leider so, dass sich so ein Halbwissen wie das deines Lehrers (sollte er wirklich immer von "C++" reden), relativ leicht fortpflanzt. Sich ein Buch zu kaufen, wo C++ draufsteht, ist z.B. auch kein Garant dafür, dass man "richtig C++" lernt; denn es gibt genug C++ Bücher, die man in der Pfeiffe rauchen kann.
Guck doch mal, ob das hier was für Dich ist:
http://www.amazon.de/Intensivkurs-Schneller-Einstieg-über-Standardbibliothek/dp/3827372585
(Ich kenne das englische Original und das macht einen guten Eindruck.)
-
vielen dank
war auch eben schon am schreiben ob mir jemand ein gutes buch empfehlen kann
-
SeppJ schrieb:
Und letzter Tipp: Keine Internettutorials für Grundlagen benutzen. Da kommt nur halbgarer, verworrener Mist bei rum und du bist ein Paradebeispiel dafür. Siehe FAQ für Buchtipps.
Trekarraz schrieb:
aber ich bin mir sicher das ich C++ lernen soll weil ich schon seid nen halbes Jahr dabei C++ zulernen und die lehrer sagen auch immer C++ und das wurde auch schon 1000 mal gefragt -.- jetzt werd ich langsam wütend auf meine lehrer -.-
War doch nicht das pöse Internet und beim falschen Buch kommt genauso viel Müll raus.
-
meld mich hier nochmal und
da ich ja eigendlich in der schule C lerne und nicht C++ sollte ich mir doch lieber nen C Buch besorgen oder nicht ?
könnte jemand mir eins gutes Empfehlen ?
-
Ein Buch habe ich gerade nicht parat, aber das Tutorial hier finde ich ganz nett: http://www.tutorials.at/c/01-programmaufbau-headerdateien.html
-
cooky451 schrieb:
das Tutorial hier finde ich ganz nett: http://www.tutorials.at/c/01-programmaufbau-headerdateien.html
Hier im Tutorial gefunden:
fflush(stdin); /* Eingabepuffer loeschen; bzw. zumindest versuchen .. */Also schön auf SeppJ hören, wenn der sagt
SeppJ schrieb:
Keine Internettutorials für Grundlagen benutzen. Da kommt nur halbgarer, verworrener Mist bei rum
Und zum Buch: der K&R ist ganz gut.
-
ahh cool

und danke an alle die mir geholfen haben und ich zum glück jetzt weiss das ich eigendlich C programmiere und nicht C++ wäre ja schlimm geworden wenn ich mit dem Wissen in eine Prüfung gegangen wäre xDPS: Jetzt ergibt auch endlich alles einen Sinn bei dem Programmieren

-
Cooky hat das mit dem Link sicher ironisch gemeint

Gemeint: http://www.tutorials.at/c/01-programmaufbau-headerdateien.html
Da wird nicht Standard-C sondern Mircosoft-C gezeigt.
Und nicht nur bei:fflush(stdin);sondern auch noch in anderen Kapiteln.
MfG f.-th.
-
Nachtrag: nicht den K&R Ausgabe 1978 nehmen. Das verwirrt nur bei aktuellen Quelltexten. Nehmt eine neuere Ausgabe.
-
f.-th. schrieb:
Cooky hat das mit dem Link sicher ironisch gemeint

Nein, eigentlich nicht. fllush(stdin) ist leider ein Fehler der sich durch sehr viele Texte zieht, ich würde sie deswegen aber nicht gleich als völlig unbrauchbar ansehen. Allerdings, wenn du sagst dass du da noch mehr Fehler gefunden hast, habe ich das Tutorial vielleicht einfach besser in Erinnerung als es ist.
Edit @flusche:
tutorial schrieb:
Ein häufig gegangener Weg ist, den Eingabestrom (standard input stream) stdin mit fflush(stdin) zu löschen. Das Problem: Das Verhalten von fflush(stdin) ist nicht standardisiert! Das heißt: Kann funktionieren, kann nicht funktionieren. In der Regel funktioniert es unter Windows, unter Linux nicht.
Ist doch alles gut erklärt.

-
cooky451 schrieb:
flusche schrieb:
Ein häufig gegangener Weg ist, den Eingabestrom (standard input stream) stdin mit fflush(stdin) zu löschen. Das Problem: Das Verhalten von fflush(stdin) ist nicht standardisiert! Das heißt: Kann funktionieren, kann nicht funktionieren. In der Regel funktioniert es unter Windows, unter Linux nicht.
Ist doch alles gut erklärt.

Das Zitat ist zwar nicht von mir, aber stimmt natürlich. So genau hab ich mir das nicht angeschaut. Ich nehme meine Kritik zurück. Wenn sogar auf den GCC mit -pendantic eingegangen wird kann auch kein Microsoft-C gelehrt werden. Und malloc kommt auch erst ganz am Schluss. Also alles in allem tatsächlich ein gutes Tutorial.
-
Also doch nicht auf SeppJ hören.
-
Oh ha, das sind natürlich immer die üblichen Fragen:
Standard C sagt:fflush(stdin);ist nicht definiert
gcc -pedantic nörgelt nicht - warum nicht? weigert der sich das zu erkennen oder kennt er das und macht das wie Mircosoft? Wenn ich mich recht an die Praxis erinnere, ist das beim gcc nicht definiert?Was mir beim Überfliegen noch aufgefallen ist in dem Link.
void main (..In dem MSDN wird das in den Beispielen öfter genutzt. Standard-C sagt nur
int main (..ist richtig. Der gcc gibt bei -pedantic auch eine Fehlermeldung.
Standard-C sagt beim letzterem braucht es keinreturn 0das wird, wenn kein return da steht automatisch generiert.
So hoffe mal, das meine Erinnerungen mich nicht trügen

f.-th.
-
f.-th. schrieb:
gcc -pedantic nörgelt nicht - warum nicht?
Ein Compiler kann doch nicht bei falschem benutzen der Standardbibliothek nörgeln. Schreib dir eine Funktion FILE* foo(){return stdin;} und mach fflush(foo()), wie soll der Compiler dann dahinterkommen das das undefiniert ist?
f.-th. schrieb:
void main (..Tutorial schrieb:
main() muss lt. C-Standard nämlich vom Typ int sein. void funktioniert zwar (mit Warnung), sollte aber nicht verwendet werden.
f.-th. schrieb:
Standard-C sagt beim letzterem braucht es kein
return 0das wird, wenn kein return da steht automatisch generiert.
Das sagt zwar der C++-Standard, nicht aber der C-Standard.
Im Buch steht, das weglassen von return in main() sei "Ganz einfach ein Ausnahmefall, den der C-Standard auch erlaubt". Wenn mich meine Erinnerungen mich nicht trügen, dann führt das zu UB, und zwar in allen Funktionen.
-
f.-th. schrieb:
So hoffe mal, das meine Erinnerungen mich nicht trügen


fflush(stdin); wäre ja geklärt.
void main:
Testen Sie es selbst. Das Programm lässt sich fehlerfrei kompilieren und läuft auch. GCC gibt aber eine Warnung aus: Warnung: Rückgabetyp von »main« ist nicht »int«. main() muss lt. C-Standard nämlich vom Typ int sein. void funktioniert zwar (mit Warnung), sollte aber nicht verwendet werden.
Und die main() Funktion gibt nur in C++ 0 zurück wenn nichts anderes da steht, in C wird halt das zurückgegeben, was gerade in eax steht. (a.k.a. nicht definiert.)
-
Nachtrag:
Sollte ein wenig präziser sein:
Standard C sagt:C/C++ Code: fflush(stdin);ist nicht definiert
gcc -pedantic nörgelt nicht - warum nicht? weigert der sich das zu erkennen oder kennt er das und macht das wie Mircosoft? Wenn ich mich recht an die Praxis erinnere, ist das beim gcc nicht definiert?Praxis bezieht sich auf MinGW und:
http://tdm-gcc.tdragon.net/ . Bin mir da nicht sicher ob es die letzte Version war oder eine andere 4.x.y?
-
Okay, zu langsam
