2012-06-12 7 views
9

Ich frage mich, warum mein C-Programm keine Informationen ausdruckt. Ich bin 100% neu im Programmieren und konnte in den letzten Wochen ein paar Dinge in Ruby und Python lernen, aber ich komme mit dem C-Zeug nirgendwohin. Hier ist die gesamte Basislinie, einfaches Programm, das jeder zuerst lernt:Warum bekomme ich keine Ausgabe für das sehr einfache Hello World-Programm?

#include <stdio.h> 

int main() 

    { 
     printf("Hello World\n"); 
     return 0; 
    } 

So habe ich das geschrieben, und ich spare als hello.c. Jetzt cd ich in das Verzeichnis, wo es ist, und dann versuche ich

gcc hello.c 

und nichts passiert - keine Fehler, nur nichts. Wenn ich statt

gcc hello.c -o hello 

eine neue ausführbare Datei in meinem Verzeichnis geschrieben wird, zu schreiben, und wenn ich es öffnen, sieht es aus wie die normalen Befehlszeilen, und hat „Hallo Welt“ dort geschrieben, wie ich in meinem Terminal erwartet das erste Mal.

Ich habe auch versucht, eine ausführbare Datei selbst machen hello.c, aber wenn ich tun, dass ich

syntax error near unexpected token `(' 
`int main()' 
+0

Danke - ja, sehr neu und vielen Dank für Ihr klares und einfaches Feedback. Hab es jetzt verstanden! – user1451632

Antwort

12

Bei der Eingabe von

gcc hello.c 

und nichts passiert, das ist zu erwarten. Genauer gesagt kompiliert GCC eine ausführbare Datei mit dem Standardnamen, der für mich a.out ist. Wenn ich dann in der Befehlszeile ./a.out eingeben würde, sehe ich die Ausgabe.

Ich denke, dass es ein etwas größeres konzeptionelles Problem hier von Ihrem Ruby/Python-Hintergrund gibt. Ruby und Python sind (normalerweise) interpretierte Sprachen. Wenn Sie also eine Skriptdatei erstellen, können Sie sie als ausführbar markieren und über some magic startet das Betriebssystem ein Programm, das die Dateien liest und für Sie ausführt. C ist jedoch kompiliert. Wenn Sie also GCC ausführen, wird die Quelldatei in eine ausführbare Datei mit dem Standardnamen oder dem angegebenen Namen umgewandelt.Zu diesem Zeitpunkt würde man keine Ausgabe erwarten, es sei denn, es gibt ein Problem mit dem Kompilierungsprozess. Dann können Sie ./hello ausführen, was eine ausführbare Datei ist, und Ihre Ausgabe sehen.

Das erklärt auch, warum Sie hello.c nicht als ausführbar markieren und ausführen können. Es muss zuerst in eine ausführbare Datei kompiliert werden. Es sieht so aus, als ob das System vorgibt, dass es ein Shell-Skript ist, was nicht der Fall ist und Ihnen einen Syntaxfehler gibt.

5

Das erste Mal, ausführbare Datei wurde dem Namen „a.out“ (oder „a.exe“ bekommen Windows), was der historische Standardname ist, den eine ausführbare Datei von gcc erhält.

Sie sollen einige Zeit damit verbringen, den Unterschied zwischen Quelle und ausführbaren herauszufinden, und zwischen dem Öffnen und Ausführen zu ...

7

gcc hello.c wird eine Datei namens a.out erzeugen
gcc hello.c -o hello wird benannt eine Datei erzeugen hello

Dies sind ausführbare Dateien, und Sie müssen diese ausführen/ausführen, um die Ausgabe zu erhalten.

Run diese als

./a.out oder ./hello

7

gcc hello.c -o hallo gibt an, dass Sie eine ausführbare Datei namens hello.exe erstellen möchten.

Sie müssen alle C-Dateien kompilieren und dann die ausführbare Datei ausführen, um das Programm auszuführen. Sie können die C-Dateien nicht tatsächlich ausführen. Wenn Sie keine exe angeben, wird nur kompiliert. Die Tatsache, dass Sie keine Fehler haben, ist eine gute Sache, weil es bedeutet, dass Ihr Code korrekt ist! :)

3

Willkommen bei der Programmierung und Stack Overflow!

gcc hello.c 

kompiliert die Datei und generiert eine ausführbare Datei 'a.out', führt sie aber nicht aus. Deshalb ist in deiner Kommandozeile nichts mehr passiert.
Ausführung starten, würden Sie eingeben müssen:

./a.out 

genauso wie für tun ‚Hallo‘, wenn ich das richtig verstehen.
Sie müssen den Unterschied zwischen Kompilierung, Verknüpfung und Ausführung lernen, wenn Sie in C programmieren möchten, finden Sie sich ein gutes Anfängerbuch oder Tutorial, es lohnt sich!
Prost!

0

Du hast die

syntax error near unexpected token `(' 
`int main()' 

Fehler, wenn Sie den Datenschutz auf Ihre hello.c Quelldatei gesetzt und versucht, sie laufen zu lassen.

Mit gcc wird Ihre .c-Quelldatei in ein Binärprogramm umgewandelt, das Sie ausführen können.

gcc -o hello hello.c 

Die Reihenfolge, die ich verwendet habe, ist nicht kritisch. Ich bin es einfach gewöhnt, auf diese Weise zu kompilieren. Sie haben diesen Weg kompiliert

was in Ordnung ist.

Die erfolgreiche Erstellung und Verknüpfung erstellt eine Ausgabedatei hallo genannt, das, was Sie ist

./hello 
-1

Haben Sie versucht, einschließlich #include<conio.h> und umfassen getch() vor return 0; laufen würde das Terminal-Fenster angezeigt werden soll.

Verwandte Themen