Fehler bei einfachem C Programm?
-
Hallo,
ich habe heute aus Gründen meines Studiums mit C angefangen.
Beim 2. Programm auch gleich das erste Problem bekommen..
Ich komme seit ner halben Stunde trotz Debug log einfach nicht drauf, wo es nicht passt... Könnte mir da jemand helfen?10:04:27 **** Incremental Build of configuration Debug for project FirstProject ****
Info: Internal Builder is used for build
gcc -O0 -g3 -Wall -c -fmessage-length=0 -o test.o "..\\test.c"
..\test.c: In function 'main':
..\test.c:8:45: error: 'zahl' undeclared (first use in this function)
printf("Die Zahl 5 + 5 ergibt: %d",zahl1 + zahl 2);
^
..\test.c:8:45: note: each undeclared identifier is reported only once for each function it appears in
..\test.c:8:50: error: expected ')' before numeric constant
printf("Die Zahl 5 + 5 ergibt: %d",zahl1 + zahl 2);
^
..\test.c:5:13: warning: variable 'zahl2' set but not used [-Wunused-but-set-variable]
int zahl1, zahl2;
^und der Code:
#include <stdio.h> int main(){ int zahl1, zahl2; zahl1 = 5; zahl2 = 5; printf("Die Zahl 5 + 5 ergibt: %d", zahl1 + zahl 2); return 0; }
Danke!!
-
Der Fehler ist in der folgenden Zeile:
printf("Die Zahl 5 + 5 ergibt: %d", zahl1 + zahl 2);
Es sollte zahl2 und nicht zahl 2 sein.
-
Mal richtig formatiert (Quote schluckt hintereinander liegende Leerzeichen)
10:04:27 **** Incremental Build of configuration Debug for project FirstProject **** Info: Internal Builder is used for build gcc -O0 -g3 -Wall -c -fmessage-length=0 -o test.o "..\\test.c" ..\test.c: In function 'main': ..\test.c:8:45: error: 'zahl' undeclared (first use in this function) printf("Die Zahl 5 + 5 ergibt: %d",zahl1 + zahl 2); ^ ..\test.c:8:45: note: each undeclared identifier is reported only once for each function it appears in ..\test.c:8:50: error: expected ')' before numeric constant printf("Die Zahl 5 + 5 ergibt: %d",zahl1 + zahl 2); ^ ..\test.c:5:13: warning: variable 'zahl2' set but not used [-Wunused-but-set-variable] int zahl1, zahl2; ^
Lies dir die Fehlermeldungen durch.
Achte auch auf die ^unter den Meldungen. Die geben die Position an, an der der Fehler autritt.
Zusammengefasst:
Der Compiler ennt zahl nicht.
Du hast due Variable zahl2 definiert aber nie benutzt.
Und mit dieser allein stehende Konstante (2) kann der Compiler nichts anfangen.
-
Das ging aber schnell, vielen Dank!! Der Tipp mit den ^ ist super
Habe leider noch eine andere FrageEin neues Programm soll nun auch Eingaben annehmen, wenn ich das aber über Eclipse mache tut sich entweder gar nichts, oder ich konnte diesen Fehler mal irgendwo rauskopieren:
11:04:19 **** Incremental Build of configuration Debug for project Learn **** Info: Internal Builder is used for build gcc -O0 -g3 -Wall -c -fmessage-length=0 -o rechnung.o "..\\rechnung.c" gcc -o Learn.exe rechnung.o c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot open output file Learn.exe: Permission denied collect2.exe: error: ld returned 1 exit status 11:04:21 Build Finished (took 1s.943ms)
#include <stdio.h> int main(){ int zahl1, zahl2, ergebnis; printf("Geben Sie die Zahl 1 ein: "); scanf("%d", &zahl1); printf ("\nGeben Sie die Zahl 2 ein: "); scanf("%d", &zahl2); ergebnis = zahl1 + zahl2; printf ("Das Ergebnis lautet: %d\n", ergebnis); return 0; }
Wüsste nicht, wieso gcc keine Rechte haben sollte... Vor allem weil es ja sonst auch geht
Wenn ich die Learn.exe so öffne, öffnet er mir die Konsole, er fragt nach den Zahlen aber schließt das Fenster dann sofort nachdem er kurz die "Antwort" gegeben hat. Irgendeiner ne Idee?
-
tafkae schrieb:
Der Tipp mit den ^ ist super
Die Zahlen hinter dem Doppelpunkt beim Dateinamen bei den Fehlermeldungen stehen für Zeile:Spalte.
Der "Permission denied" fehler tritt auf, wenn das Programm (Learn.exe) noch läuft. (Schau nach dem Fenster oder sieh im Taskmanager nach)
Du hast da ein Konsolenprogramm. Das startet man am besten in einer offenen Konsole. Dann kannst du die Ergebnisse auch länger sehen.
Andere IDE lassen das Konsolenfenster auch offen.
-
Also erstmal muss ich hier ja wirklich nochmal sagen, ich bin extrem überrascht, was für ein tolles feedback es hier einfach so, kostenfrei gibt. Toll! Sobald ich was kann, werde ich mich dem anschließen
Ok, das ganze hat soweit funktioniert, was nur bei Eclipse wirklich komisch ist, wenn ich das Programm ausführe ist das Konsolenfenster unten einfach weiß. Habe dann testweise mal was reingeschrieben, dann hat es auch funktioniert. Habe mal nen Screenshot davon gemacht, kann mir vll wer sagen, wieso das so ist ?
-
Es gibt da einen Fehler in der Eclipse-Konsole. Stdout wird nicht richtig gepuffert.
Zur Abhilfe schau mal http://stackoverflow.com/questions/16877264/eclipse-c-c-printf-before-scanf-issue
Die Konsole wird unter Windows vom Programm CMD geliefert. (Oft auch als DOS-Fenster bezeichnet)
-
Sag mal Dirk, bist du hier angestellt oder einfach sozial ? :p
Aber danke! Das mit Eclipse werde ich mir dann nochmal anschauen, hatte jetzt aber erstmal vor auf CodeBlocks umzusteigen.. Danke aber erstmal soweit!!