Hilfe bei C mit Dev C++



  • Hallo, ich bin auch Neuling, was mir jedoch aufgefallen ist das du die Variable "toupper" die du in Zeile 11 benutzt nirgends deklariert(kann man das so nennen?) hast. Sagt dir ausserdem auch dein Compiler als Fehler.

    Denke mal du musst noch irgendeine Header datei einbinden, falls du "toupper" als Methode verwenden willst

    http://www.cplusplus.com/reference/clibrary/cctype/toupper/
    schau mal hier


  • Mod

    toupper wird in ctype.h deklariert. Dev C++ ist, sofern du nicht die neueste beta-Version hast, hoffnungslos veraltet. Ebenso dein Buch, wenn da drin main ohne int steht. Außerdem ist es kein gutes Zeichen, wenn der Autor selber nicht weiß, welche Header er einbinden soll. Welches Buch ist das?



  • Wenn du C lernst, dann benenne auch deine Dateien entsprechend mit der Endung .c , also zahlensystemumwandler.c

    stephano schrieb:

    ... das du die Variable "toupper" die du in Zeile 11 benutzt nirgends deklariert(kann man das so nennen?) hast.

    An der runden Klammer direkt nach toupper kann man erkennen, dass toupper keine Variable ist sondern eine Funktion (sein soll).



  • Nimm code::block oder im Falle von Windows die erste Wahl Visual Studio 2010 Express.
    Dev C ist obsolet.





  • MarkoFFM schrieb:

    Fehler: 11 ...\zahlensystemumwandler**.cpp** `toupper' undeclared (first use this function)

    Du scheinst auch C Code mit einem C++ Compiler übersetzen zu wollen, ist auch anfängerhafter Schrott.



  • Hi, ich habe dir deinen code mal ein bisschen umgeschrieben, so funktioniert er auf jeden fall.

    #include <stdio.h>
    #include <stdlib.h>
    
    main(){
             char eingabe;
             int zahl;
             printf("\Wahelen Sie (O)ktal, (H)ex oder (A)SCII > ");
             eingabe=getchar();   
             printf("\Bitte Dezimalzahl eingeben: ");
             scanf("%i",&zahl);
             switch(eingabe) { // Switch mit Abhängigkeit der Variable "eingabe"
                             case 'O': printf("Dezimal %i = Oktal %o \n", zahl,zahl);
                                       break;
    
                             case 'H': printf("Dezimal %i = Hexadezimal %x \n",zahl,zahl);
                                       break;
    
                             case 'A': if(zahl <=255) printf("ASCII-Code %i entspricht %c \n",zahl,zahl);
                                       else
                                       printf("Diese Zahl ist zu gross ! \n\a");
                                       break;
             }
    
             system("pause");
             return(0); 
    }
    

    Solltest du irgendetwas nicht verstehen, kannst du mich einfach fragen.

    Wenn du ein C-Programm schreiben willst, musst du den Quellcode auch immer als .c abspeichern.

    Für den Einstieg kannst du bei dem Dev C++ Compiler bleiben (habe ich auch immer benutzt). Wenn du willst, kann ich dir auch noch ein paar nützliche Tipps zu dem Compiler geben.


  • Mod

    Galileo schrieb:

    Hi, ich habe dir deinen code mal ein bisschen umgeschrieben, so funktioniert er auf jeden fall.

    Also ich bekomme 6 Compilerwarnungen (2-3 davon von der ernsten Sorte) und einen " sh: pause: not found "-Fehler zur Laufzeit.

    P.S.: Ja, das ist überkritisch. Aber wenn man behauptet, dass es auf jeden Fall funktioniert, dann sollte das Programm schon streng standardkonform sein.



  • SeppJ schrieb:

    Galileo schrieb:

    Hi, ich habe dir deinen code mal ein bisschen umgeschrieben, so funktioniert er auf jeden fall.

    Also ich bekomme 6 Compilerwarnungen...

    Typische Anfängernaivität, die glauben, wenn ihr Compiler auf ihrem gerade aktuellen Entwicklungssystem keine Fehler auswirft, ist das Programm fehlerfrei, und das auch noch 'in jedem Fall'.
    Schlussfolgerungsschrott, den man auch in diversen Fachbüchern oft findet.



  • Galileo schrieb:

    /* ... */
    main(){ /* steht so nicht im Standard */
             /* ... */
    
             system("pause"); /* gewöhn's Dir ab ... */
             return(0); 
    }
    

    Ich würd' an Deiner Stelle auf Nummer Sicher gehen:

    /* ... */
    main(){
             /* ... */
             return(((((( NULL * ( NULL ) )))))); 
    }
    

    cheers, Swordfish



  • Swordfish schrieb:

    Galileo schrieb:

    /* ... */
    main(){ /* steht so nicht im Standard */
             /* ... */
    
             system("pause"); /* gewöhn's Dir ab ... */
             return(0); 
    }
    

    Ich würd' an Deiner Stelle auf Nummer Sicher gehen:

    /* ... */
    main(){
             /* ... */
             return(((((( NULL * ( NULL ) )))))); 
    }
    

    cheers, Swordfish

    Ich würd lieber noch 2 Klammern hinzufügen. Man weiß ja nie.



  • Als K&R C zusammengestellt hatten war das mit

    main()
    

    halt so 👍
    Aber danach gab es ja C89, C99 und nun noch C0? (müsste suchen) seit ein paar Wochen. Es gab auch noch Zwischenschritte. C90 und noch ein paar.

    Wenn mal halt heute Standard-C Quelltext schreiben will, sollte man

    int main(...
    

    wählen.

    Die C Variante C89 sollten die Compiler weitgehend beherrschen. Bei den anderen C Standards muss man sich mit den Compilern eingehender befassen.

    MfG f.-th.



  • Noch mal nachgesehen nicht C0? sondern
    C11 oder C1X laut Wiki



  • Ist C11.
    Die ISO hat das noch vor Weihnachten verabschiedet.



  • Wenn du Fehlermeldungen bei dem Source Code erhällst, wäre es sehr sinnvoll, wenn du diese Meldungen auch mal genau aufführst ; )

    Desweiteren sind eure Beschwerden hier echt lächerlich!

    Es wurde ein Code gepostet der nicht geht - Ich habe ihne soweit umgeschrieben, damit er ausgeführt werden kann - nicht mehr und nicht weniger.

    ich habe es auch mit

    int main()
    

    gelernt, da ich aber den genannten Source c&p in meine IDE habe, ist mir das nicht weiter aufgefallen.

    Der Vorschlag mit

    system("PAUSE");
    

    stammt auch nicht von mir, da der Schreiber jedoch explizit diesen Befehl angegeben hat, habe ich ihne drin gelassen.
    Eine andere Möglichkeit wäre

    getch();
    

    Ich bin erst seit kurzem in diesem Forum und finde es jetzt schon sehr lächerlich, wie scharf einfache Vorschläge kritisiert werden.
    Ich wollte lediglich helfen, damit der genannte Source Code funktioniert. Wenn jemand 100% Wert auf den genauen Standard legt, bitte in die Fragen mit reinschreiben, damit der Antwortende seinen Source nach diesem Kriterium posten kann.



  • Du hast eben keine Ahnung, von dem was du hier schreibst.
    Und die lächerliche Kritik, von der du sprichst, ist eben der mehr oder weniger zartfühlende Hinweis darauf, dass du keine Ahnung hast.
    system("PAUSE") durch getch() zu ersetzen belegt dies nochmals und zwar in gesteigerter Form (kein Standard, funktioniert nicht bei mehr als 1 Zeichen im Eingabepuffer).
    Halte einfach deine Klappe in der ersten Zeit (bei dem Namen, den du dir gewählt hast, würde ich mal sagen, mind. 3 Monate), lies hier mit, versuche wenigstens, ein wenig zu verstehen und dann kannst du mal wieder mit deinem dann hoffentlich standardkonformen Code hier aufschlagen.



  • hjhjuh schrieb:

    Ich würd lieber noch 2 Klammern hinzufügen. Man weiß ja nie.

    Stimmt, da war ich wirklich nachlässig 👍



  • Wutz schrieb:

    Halte einfach deine Klappe

    Private Nachricht wurde bereits diesbezüglich gesendet.

    Wutz schrieb:

    bei dem Namen, den du dir gewählt hast...

    Was stimmt denn nicht mit dem Namen?

    Galileo Galilei (* 15. Februar 1564 in Pisa; † 8. Januar 1642 in Arcetri bei Florenz) war ein italienischer Philosoph, Mathematiker, Physiker und Astronom, der bahnbrechende Entdeckungen auf mehreren Gebieten der Naturwissenschaften machte.(Quelle: Wikipedia.de)
    Für mich ein großes Vorbild, deshalb diese Namenswahl.



  • Du hast nicht nur keine Ahnung von C sondern auch keine Ahnung vom Namensgebrauch in diesem Forum. Der Name ist hier verbrannt, da hier sehr oft Laien wie du aus einem Pfuscherbuch aus einem gleichnamigen Verlag zitieren und mit ihren dort erworbenen Kenntnisse hier aufschlagen, genauso wie du. Und deshalb gilt für solche Leute wie dich in nichtesoterischen Foren wie hier: an sich und öfter mal die Klappe halten insbesondere bei konkreten Antwortversuchen.



  • Wutz schrieb:

    Du hast nicht nur keine Ahnung von C sondern auch keine Ahnung vom Namensgebrauch in diesem Forum. Der Name ist hier verbrannt, da hier sehr oft Laien wie du aus einem Pfuscherbuch aus einem gleichnamigen Verlag zitieren und mit ihren dort erworbenen Kenntnisse hier aufschlagen, genauso wie du. Und deshalb gilt für solche Leute wie dich in nichtesoterischen Foren wie hier: an sich und öfter mal die Klappe halten insbesondere bei konkreten Antwortversuchen.

    Ich bitte hier höflich darum, dass sich eine Admin/Mod der Sache annimmt. Es kann nicht sein, dass Leute die versuchen anderen zu helfen solche Sachen an den Kopf geworfen bekommen!


Anmelden zum Antworten