Hilfe bei C mit Dev C++
-
Hallo, bin absoluter Neuling bei C und lerne zur Zeit noch aus einem Buch.
Programmiere unter Windows 7 mit dem Program Dev C++.Beim Abschreiben eines Quellcodes erscheint immer ein Fehler, vlt könnt ihr mir weiterhelfen.
#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(toupper(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"); }
Fehler: 11 ...\zahlensystemumwandler.cpp `toupper' undeclared (first use this function)
Danke im Voraus,
Marko
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x, bzw. C++11) in das Forum C (C89 und C99) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
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
-
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.
-
DEV: http://orwellengine.blogspot.com/2011/12/dev-c-5100-released.html
hast du den schon gesehen?
-
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.
-
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äregetch();
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.