Problem mit C schon beim Anfang
-
Moin Leute,
also in Sachen C bin ich ein absoluter Anfänger, schon bei meinem ersten "Programm" hab ich schwierigkeiten :-(. Mein Problem ist folgendes: Ich schreibe den angegebenen Code aus meinem Buch (C - Programmieren von Anfang an von Helmut Erlenkötter) ab, lass es durch den Compiler (aus dem i-net; Pelles C IDE) laufen und es wird angezeigt, dass ein Fehler vorhanden ist. Nur welcher? Es wird auch eine .exe Datei erzeugt, wenn man die öffnet erscheint für ein paar Sekundenbruchteil die DOS - Eingabeleiste und dann ist die weg und passieren tut überhaupt nichts mehr. Hier ist mal der Code:/*bspl0001.c */ #include <stdio.h> main(){ printf("\nDies ist ein erstes C-Programm.\n"); printf("\nWie Sie sehen, kann 'printf' "); printf("nicht nur Text drucken,\n"); printf("sondern auch rechnen.\n\n"); printf("13 * 7 = %i \n",13 * 7); }
Im folgenden Text wird schön erklärt, wie das Script funktioniert, nur eine Lösung des oben gennanten Problemes find ich nicht.
Danke schon mal für eurer Hilfe.
Gruß morzi
-
Der Compiler sollte dir schon sagen wo der Fehler ist, Zeile und so
Ansonsten debugger. Welchen Compiler hast du denn?Ausserdem solltest du
int main() { //...Code hier return 0; }
schreiben, das
return 0;
am Ende ist zwar optional, aber besser wärs, es zu machen.
-
Ich schätz mal er gibt keinen fehler aus sonder nur ne warnung.
Dann wär es mal gut wenn du die mitpostest.Aber sie wird wahrscheinlich nur bedeuten das du das int vor main vergessen ahst und keinen rückgabewert angegeben ahst
so ists richtig/*bspl0001.c */ #include <stdio.h> int main(){ printf("\nDies ist ein erstes C-Programm.\n"); printf("\nWie Sie sehen, kann 'printf' "); printf("nicht nur Text drucken,\n"); printf("sondern auch rechnen.\n\n"); printf("13 * 7 = %i \n",13 * 7); return 0; }
Das die konsole gelich wieder schleißt ist normal, weil sich das programm beendet, Häng entweder dashier hinter das letzte printf "scanf("%c", &zeichen);"
und "char zeichen;" vor das erste printf.
Also so:/*bspl0001.c */ #include <stdio.h> int main(){ char zeichen; printf("\nDies ist ein erstes C-Programm.\n"); printf("\nWie Sie sehen, kann 'printf' "); printf("nicht nur Text drucken,\n"); printf("sondern auch rechnen.\n\n"); printf("13 * 7 = %i \n",13 * 7); scanf("%c", &zeichen); return 0; }
Oder du startest das gnaze programm direkt aus der console heraus.
Also einfach dei eingabeaufforedrung starten und dann ins verzeichniss deiner exe wechseln und diese dann starten indem du ihren namen eingibst.//EDIT
Das das erste Beispiel nicht klappt, ist eigentlich normal :-).
Bei weiteren Fragen schau zuerst mal ins FAQ, da stehn so die
StandartFragen und die antworten dazu.
-
Sorry, nochmal ich.
Um die Konsole offen zu lassen, kannst Du am Ende ein
scanf();
schreiben,
oder das Programm gleich in der Konsole starten
-
@Storm
Du warst zu langsam und doch zu schnell!
-
Also erst mal danke für so viel Hilfe. Werd jetzt mal alles in Ruhe ausprobieren.
@Helferlein: Mein Compiler ist Pelles C IDE.
-
@ Storm.Xapek.de
Also ich bekomme angezeigt, das ein Fehler vorhanden ist; es wird aber nicht angezeigt, was der Fehler ist.
Und deshalb poste ich hier ja
-
also ich hab die ganzen sachen von oben rein gemacht, raus kam das:
Erzeugen von bspl0001.obj.
Erzeugen von bspl0001.exe.
POLINK: error: Unresolved external symbol '_WinMain'.
POLINK: fatal error: 1 unresolved external(s).
*** Fehlercode: 1 ***
Fertig.Was soll ich damit anfangen?
-
Was auch immer das für ne IDE ist..
hast Du ein Windows PRojekt erstellt anstatt einer Konsolen Applikation?
Und das: POLINK: error: Unresolved external symbol '_WinMain'
ist doch eine Fehlermeldung oder? Was hat er denn vorher ausgespuckt?
Gruss
-
Erzeugen von bspl0001.obj.
C:\...\Projekte\C\bspl0001.c(3): warning #2099: Missing type specifier.
C:\...\Projekte\C\bspl0001.c(9): warning #2096: Missing return value.
Fertig.Das kommt raus, wenn ich den Code komplimiere, wenn er so ist, wie er im Buch steht.
Gruß
-
Das sind dochaber bloss Warnungen, dein PRogrammwird trotzdem ausgeführt.
2. heisst, du sollst mit return 0; eben 0 als return value zurückgeben.
1. weiss ich ned, gibt er keine Zeilennummer an? *nachschau* Ah doch (3).
Das heisst er motzt, dass du nicht int main() schreibst, sondern nur main(), ohne Typenbezeichner.
-
http://www.c-plusplus.net/forum/viewtopic-var-t-is-134691.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-136013.htmlund bitte kein halbwissen, helferlein.
-
ich werd doch wohl noch Fehlermeldungen interpetieren dürfen?
int main{ return 0; }
-
das meinte ich nicht. ich meinte eher das scanf(), was ich persoenlich als fuer diesen zweck fehl am platz empfinde.
-
Versuchs einfach mal so...
/*bspl0001.c */ #include <stdio.h> main() { printf("\nDies ist ein erstes C-Programm.\n"); printf("\nWie Sie sehen, kann 'printf' "); printf("nicht nur Text drucken,\n"); printf("sondern auch rechnen.\n\n"); printf("13 * 7 = %i \n",13 * 7); getchar(); return 0; }
-
sagte doch, dass er es (lieber) gleich in der konsole starten kann.
dazu sind konsolen programme doch da, oder?
also ausführen->command
dann ins richtige dir hangeln mit cd irgendwas
und exe ausführen.
ist imho der einzig wahre weg, zurück zu konsolenprogrammen.
ein "hit enter to exit" ist wirklich fehl am platz, da geb ich dir recht!
-
Also, das kompilieren geht jetzt problemlos (kein fehler wird mehr angezeigt
). Nur wenn das Programm dann die .exe Datei erstellen soll, kommt das:
Erzeugen von bspl0001.exe.
POLINK: error: Unresolved external symbol '__penter'.
POLINK: error: Unresolved external symbol '_printf'.
POLINK: error: Unresolved external symbol '___filetab'.
POLINK: error: Unresolved external symbol '_fgetc'.
POLINK: error: Unresolved external symbol '__WinMainCRTStartup'.
POLINK: fatal error: 5 unresolved external(s).
*** Fehlercode: 1 ***
Fertig.Also ich hab da jetzt den ganzen abend dran rumgebastelt, aber es will einfach nicht werden. Sorry, wenn ich hier euch zu maile, aber ich bin halt wirklich in Sachen C ein absoluter Noob. Danke mal trotzdem für die Hilfe bisher und hoffentlich noch weitere.
-
morzi schrieb:
Also, das kompilieren geht jetzt problemlos (kein fehler wird mehr angezeigt
). Nur wenn das Programm dann die .exe Datei erstellen soll, kommt das:
Erzeugen von bspl0001.exe.
POLINK: error: Unresolved external symbol '__penter'.
POLINK: error: Unresolved external symbol '_printf'.
POLINK: error: Unresolved external symbol '___filetab'.
POLINK: error: Unresolved external symbol '_fgetc'.
POLINK: error: Unresolved external symbol '__WinMainCRTStartup'.
POLINK: fatal error: 5 unresolved external(s).
*** Fehlercode: 1 ***
Fertig.Also ich hab da jetzt den ganzen abend dran rumgebastelt, aber es will einfach nicht werden. Sorry, wenn ich hier euch zu maile, aber ich bin halt wirklich in Sachen C ein absoluter Noob. Danke mal trotzdem für die Hilfe bisher und hoffentlich noch weitere.
mach es doch einfach so:
/*bspl0001.c */ #include <stdio.h> int main() { printf("\nDies ist ein erstes C-Programm.\n"); printf("\nWie Sie sehen, kann 'printf' "); printf("nicht nur Text drucken,\n"); printf("sondern auch rechnen.\n\n"); printf("13 * 7 = %i \n",13 * 7); getchar(); return 0; }
-
nimm eine andere IDE und einen anderen compiler. deine jetzigen sind nicht fuer anfaenge geeignet.
saug dir mingw als compiler+zusatztools und code::blocks als IDE/editor.
-
/*bspl0001.c */ #include <stdio.h> main(){ printf("\nDies ist ein erstes C-Programm.\n"); printf("\nWie Sie sehen, kann 'printf' "); printf("nicht nur Text drucken,\n"); printf("sondern auch rechnen.\n\n"); printf("13 * 7 = %i \n",13 * 7); sleep(3000); }
Dieser Code oben geht bei mir ohne Probleme.Habe das Buch auch wenn du allso wieder Probleme hast eine PN schicken.
gruss Schlubl