Frage von AmirZoldyck, 81

wieso kommt ein fehler beim kompilieren?

Hey Leute, bin 15 Jahre alt und lerne gerade die Programmiersprache, weil ich etwas in Richtung Informatik studieren will. Dafuer habe ich mir ein Buch gekauft und das heisst 'C Programmieren von Anfang an' von Helmut Erlenkoetter. Ich scheitere irgendwie schon beim Kompilieren. Dort wird ein Beispielprogramm angegeben das man abschreiben sollte

/* bspl0001.c */ 

#include <stdio.h>

main(){ 

    printf("\nDies ist mein erstes C-Programm.\n");

    printf("\nWie sie sehen, kann 'printf' ");

    printf("nicht nur Texte drucken,\n);

    printf("sondern auch rechnen. \n\n"); 

    printf("13 * 7 = %i \n", 13 * 7);

 }

und wenn ich kompilieren will dann kommen mehrer Error's. Die Entwicklungsumgebung mit der ich arbeite heisst Pelles C IDE. Ich habe mir diese ausgesucht, weil ich von mehreren Personen gehoert habe, dass sie anfaengerfreundlicher ist. Ich hoffe ihr koennt mir weiterhelfen.

Die Error's die mir angezeigt werden:

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(6): error #1040: Unterminated string or char constant.

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(3): warning #2099: Missing type specifier; assuming 'int'.

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(3): warning #2117: Old-style function definition for 'main'.

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(7): error #2140: Type error in argument 1 to 'printf'; expected 'const char * restrict' but found 'int'.

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(7): error #2001: Syntax error: expected ')' but found ';'.

* Fehlercode: 1 * Fertig.

Antwort
von sarahj, 33

Ein Tipp:
immer mit dem ersten Fehler anfangen, weil die anderen oft Folgefehler sind.

In Deinem Besipiel sind es die vergessenen Gänsefüsschen im print-string. Dadurch wird der Rest (bis zum nächsten Gänsfüsschen) als String-Konstante interpretiert, und der nachfolgende Code natürlich unsinnig (der nächste print-String wird dann als Anweisungen interpretiert, was natürlich nur Mist ergibt. So kommen die weiteren Fehlermeldungen, die aber verschwinden, wenn der 1. Fehler behoben ist.

Tipp2: die Fehlermeldung genau anschauen: sie sagt: "Unterminated String Constant" also mit anderen Worten: fehlende Gänsefüsschen.

Tipp3: die Zeilennummer der Feheler stimmen nicht immer - manchmal merkt der Compiler erst in einer Folgezeile, daß was nicht stimmt. Also immer auch "rückwärts" schauen.

Antwort
von GinkgoMidan, 81

hallo, fein ja c oder fortran sind ideal zum anfangen :)

Du hast hier einige Fehler gemacht, wo steht in den Klammern am ende des Links z.B. (7) oder (3). Sieh dir hier noch einmal den Code an.

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(6): error #1040: Unterminated string or char constant.

--> Zeile 6: printf("nicht nur Texte drucken,\n);  - sieh mal Anführungszeichen am Ende vergessen

 das ist nur einer

Kommentar von AmirZoldyck ,

und die anderen Fehler :() Ich scheitere schon bei sowas, das wird noch ganz toll xD

Kommentar von GinkgoMidan ,

ok lass uns mal sehen :)

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(3): warning #2099: Missing type specifier; assuming 'int'.

--> Datentypfestlegung hatte ich etwas schon geschrieben zu - du hast vergessen dem Programm zu sagen was es verarbeiten soll, aber sehr wohl zahlen im unteren Bereich verwendet - nun reagiert das Programm mit : HÄ was willst du ;)

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(3): warning #2117: Old-style function definition for 'main'.

--> Zeile 3 : diese Art der Funktionsdefinition ist nicht mehr gültig, weil veraltet, schreib sie um, sieh dir das Beispiel an, dass ich dir in meinem anderen Kommentar über Datentypdefinititon geschickt habe

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(7): error #2140: Type error in argument 1 to 'printf'; expected 'const char * restrict' but found 'int'.

--> Zeile 7: printf("13 * 7 = %i \n", 13 * 7);  ---> bist du sicher er weiß, was i ist ;)? Definiere

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(7): error #2001: Syntax error: expected ')' but found ';'.

--> Zeile 7: scheint mir eher ein Folgefehler zu sein

Kommentar von AmirZoldyck ,

Also danke, dass du mir so hilfst, echt nett. Ehm ja, das mit veraltet hab ich mir schon gedacht, weils ja im Error so stand. Das mit diese i verstehe ich nicht, weiss selber nicht was damit gemeint ist, steht einfach so im Buch.

Achja bei Zeile 6, jetzt Zeile 15, kommt immer noch der unterminated string error, obwohl ich jetzt alles wie im Buch stehen habe. 

Kommentar von GinkgoMidan ,

das ist ist eine Variable, ;) datentypendefinition du musst das i definieren, sonst weiss er nicht was oder wie er verarbeiten muss, auch solltest du darauf achten, dass du die printanweisung komplett correct gibst. :)

Kommentar von AmirZoldyck ,
typedef char name[200];
typedef char postleitzahl[5];

typedef struct {
	name strasse;
	unsigned int hausnummer;
	postleitzahl plz;
} adresse;

int main()
{
	name vorname, nachname;
	adresse meine_adresse;
}
meint man damit das, also mit Datentypendefinition?
Kommentar von GinkgoMidan ,

oh sorry nicht gesehen, ja genau wie beschrieben ;) in jeder Sprache gibt es dafür lediglich andere Wege. Was du allerdings machen solltest, war INT zu definieren == Integer

Kommentar von AmirZoldyck ,

Bin echt dumm und Blicke nirgendswo durch Mensch hahah :D aber danke, dass du versuchst mir zu helfen, allerdings muss ich das langsam beenden hab ja morgen Schule ^^

Kommentar von GinkgoMidan ,

Nein du bist nicht dumm, du hast nur die Logik noch nicht intus

ich habe dir eine pn geschickt mit einem Beispiel, welches sich fehlerfrei kompilieren lässt.

Kommentar von GinkgoMidan ,

:) sag doch deinem Lehrer, er soll die Neuerungen mit in den Unterricht einbauen. Die neuen Compiler können mehr. Pelle ist hatte mir sogar noch mehr Fehler angezeigt als dir ;)

Kommentar von AmirZoldyck ,

Also ich lerne das fuer mich selbst, sowas kommt bei uns im Unterricht nicht dran. Dort machen wir irgendwie nur Textverarbeitung. Ich lerne das fuer mich, da ich ja in diese Richtung studieren will. Du koenntest mich ja ein wenig teachen, wenn du moechtest^^. 

Kommentar von GinkgoMidan ,

-lach- :D - wenn du Fragen hast, schreib mich an, wenn ich online bin, sehe ich es ja ;) -

Antwort
von Mayelle, 76

ich glaube du musst den Datentypfestlegen. Ohje ich sag lieber nichts dazu, bin ja absolut kein Profi xD

Kommentar von AmirZoldyck ,

Bin ja selbst keiner ^^. Wie legt man ihn denn fest? Also die Dateiendung sollte .c sein steht im Buch.

Kommentar von Mayelle ,

Das weiß ich nicht mehr so genau. Das fand ich in der Schule recht kompliziert, außerdem haben wir mit Java geübt.. da wird das wahrscheinlich anders sein :/

Kommentar von GinkgoMidan ,

hallo, es ist an sich völlig gleichgültig, welche Sprache ihr nehmt, das Grundprinzip ist überall das gleiche :)

Kommentar von GinkgoMidan ,

Datentypenfestlegung in diesem Falle:  int beispiel  -- sieh dir mal diese Seite hier an - hier kannst du sehen wie einfach Datentypen festgelegt werden.

https://de.wikibooks.org/wiki/C-Programmierung:_Komplexe_Datentypen

Kommentar von AmirZoldyck ,

Oh vielen Dank, langsam wirds, danke euch beiden. Und @Mayelle ihr habt das in der Schule gemacht???

Kommentar von Mayelle ,

jap (: letztes Jahr Greenfoot und Java/Programmieren. Dieses Jahr erstellen wir Websiten !

Kommentar von AmirZoldyck ,

Gehst du auf eine Schule die darauf spezialisiert ist oder auf eine normale Schule? Bei uns machen wir nur Textverarbeitung :(. Ich will mehr ueber angewandte Informatik lernen und nicht so einen Stuss.

Kommentar von Mayelle ,

also ich gehe auf ein berufliches Gymnasium (gesundheitswissenschaftliches Gymnasium). Aufm allgemeinbildenden hatte ich auch zuletzt in der 6. Klasse Informatik :D bei meiner jetzigen Schule (was übrigens die weiterführende Schule nach Real ist das, die nehmen aber auch vom allgemeinbildenden Gymi Schüler an) ist Informatik pflicht (für die meisten jedenfalls^^). Aber nein, meine Schule ist nicht auf Technik spezialistert ^^

Kommentar von AmirZoldyck ,

Krass, also ich geh auf eine normale Realschule in Bayern und bei uns macht man im IT unterricht einfach NICHTS spannendes. Lass uns tauschen :/

Kommentar von Mayelle ,

tut mir leid, ich bin glücklich mit meiner Schule :p

Antwort
von grtgrt, 25

Im dritten deiner insgesamt 5 print-Befehle fehlt das schließende Gänsefüßchen.

Keine passende Antwort gefunden?

Fragen Sie die Community