String erstellen



  • Dein DEV-IDE hat meist den MinGW 3.4.2 oder 3.4.5 als Compiler. Der basiert auf dem gcc und ist inzwischen ein wenig älter.

    Aber, wenn du nicht eine extrem angepasste Version nutzt müsste selbst dieses alte Entwicklungssystem mit den Headern klar kommen. Oder habt ihr da etwas so eingestellt das alle Quelltexte als C interpretiert werden?

    Wenn du mal neuere Varianten des DEV sehen willst =>
    http://orwellengine.blogspot.com/2011/12/dev-c-5100-released.html

    Aber vielleicht willst du ja wegen der Schule bei deiner Version bleiben 🙄

    Speicherst du deine Quelltextdatei mit der Endung .c oder .cpp?
    Für C++ solltest du .cpp wählen.

    Das richtige Projekt hast du ja gewählt ehe du den Quelltext eingibst?

    MfG f.-th.



  • Dazu kann ich nix sagen ...
    wir haben das Programm fertig zugestellt bekommen und wir haben selbst bei Programmieren eine fertige Datei zugesteckt bekommen in dem wir nur noch unser Code rein schreiben müssen und der Datentyp heißt .c
    ich fühl mich sooo unwissend 😃

    Code der Schule:

    #include <stdio.h>
    #include <stdlib.h>
    #include "main.h"
    
    int main(int argc, char *argv[])
    {
        //ENTER YOUR CODE BELOW
    
        // ENTER YOUR CODE ABOVE
        system("PAUSE");
        getch();
        return 0;
    }
    


  • Da ist keine einzige Zeile C++.



  • Trekarraz schrieb:

    wir haben das Programm fertig zugestellt bekommen und wir haben selbst bei Programmieren eine fertige Datei zugesteckt bekommen in dem wir nur noch unser Code rein schreiben müssen und der Datentyp heißt .c

    Dann sollt ihr wohl C und kein C++ schreiben.



  • am liebsten würde ich den Lehrern eine runter hauen -.-
    ich glaube ich sollte mir nen buch besorgen und es selber in die hand nehmen c++ zulernen da brauch ich nicht so bescheuerte lehrer zuhaben die mir sagen das das c++ sei grrr 😡



  • 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 xD

    PS: 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 kein

    return 0
    

    das 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 0
    

    das 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.)


Anmelden zum Antworten