Richtiges Hallo Welt in C [closed]

Lesezeit: 7 Minuten

Benutzer-Avatar
Tor Klingberg

Was ist das richtige Hello World-Programm in C?

Seit der ersten Seite von Google-Ergebnisse für „c hallo Welt“ stark variieren und viele sind altes C, ich möchte die Standardversion an einem Ort zum einfachen Kopieren und Einfügen.

  • Machst du viel Hallo-Welt-Programmierung?

    – Edwin Buck

    10. September 2012 um 17:04 Uhr

  • Alle Versionen sind so ziemlich richtig! Und Sie können ohne Probleme so ziemlich die gesamte C-Bibliothek einbeziehen, um eine Hallo-Welt zu erstellen! Das ist nicht wirklich eine konstruktive Frage! Konstruktiv wäre vielleicht das effizienteste Hallo-Welt-Programm in C? Oder eine Version, die einen schnellen Überblick über Syntax und Anforderungen gibt (z. B. stdio.h-Einbindung, Hauptrückgabetyp usw.) Ein Hallo Welt ist meines Wissens fast immer richtig!!!

    – Angelos Chalaris

    10. September 2012 um 20:51 Uhr

  • Jedes Programm, dessen einzige Funktion das Drucken ist hello world auf Ihrem Bildschirm ist korrekt. Diese Frage hat bereits viele Umfragen ausgelöst … Abstimmung zum Abschluss.

    – Jean-Francois Corbett

    11. September 2012 um 7:48 Uhr

  • Es gibt einige Korrektheitsprobleme, die durch die Frage aufgeworfen werden, z. B. einige der Ergebnisse, in denen die Google-Suche den Rückgabetyp von nicht angibt main (unter Berufung auf implizit int). Aber ich glaube nicht, dass die Frage wirklich formuliert ist, um diese Probleme herauszuarbeiten: Es gibt kein “richtiges” Hallo Welt; wenn die Frage lautet “Was ist falsch an diesem Code?” dann sollte es posten und nach spezifischem Code fragen, nicht über die Google-Suche auf den gesamten Code der Welt verweisen; Ich bezweifle, dass SO der richtige Ort ist, um ein „Hallo Welt“ für jede Sprache mit einer Rate von einer Frage pro Sprache zu kuratieren.

    – Steve Jessop

    11. September 2012 um 11:55 Uhr


Benutzer-Avatar
Ästhet

Kommt drauf an wie faul du bist 🙂

#error Hello World

  • Ich habe hier etwas gelernt. Ich bin neu in C, also war mir nicht bewusst, dass ich meine eigenen Fehler einführen kann.

    – xandout

    23. September 2013 um 6:03 Uhr

  • Das ist leider absolut richtig.

    – rvighne

    13. Oktober 2013 um 0:18 Uhr

  • Kein Auf- oder Abstimmen, denn manchmal sind großartig und schrecklich dasselbe.

    – Meawoppl

    4. März 2014 um 3:05 Uhr

  • Aber das kompiliert nicht. Kompilieren != läuft.

    – Jamesfischer

    27. Juli 2014 um 12:11 Uhr

  • Ich kann es nicht kompilieren. Gibt es etwas anderes an dem Code? Ich bin weder in C noch in seinen Aromen fließend.

    – Paul Pedroso

    4. Juli 2018 um 16:31 Uhr

Ich glaube, dies ist ein Standard-Hello-World-Programm in C:

#include <stdio.h>

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

  • Sollte sein puts("hello") oder printf("%s","hello")

    – Jan Turoň

    10. September 2012 um 23:51 Uhr

  • @JanTuroň ist Puts Standard C oder Possix?

    – Koray Tugay

    20. Mai 2015 um 17:40 Uhr

  • @KorayTugay: puts() ist in Standard C (alle Editionen). Es ist auch in POSIX.

    – Jonathan Leffler

    20. Mai 2015 um 17:43 Uhr

  • @JonathanLeffler Danke.

    – Koray Tugay

    20. Mai 2015 um 19:28 Uhr

Benutzer-Avatar
Jonathan Leffler

In C99 oder C2011 könnten Sie diese fünf Codezeilen verwenden:

#include <stdio.h>
int main(void)
{
    puts("Hello World!");
}

Da C99 (aber nicht C89) es erlaubt, das wegzulassen return 0; Am Ende gibt es einen deterministischen Status von 0 (Erfolg) an die aufrufende Umgebung zurück. Es hat keine ungenutzten Argumente für die Funktion. Es hat den Prototyp für puts() aus der Kopfzeile. Die Ausgabe enthält ein entsprechendes Zeilenende. Ich denke, es ist koscher und im Wesentlichen minimal.

  • Sie brauchen nicht einmal die “Leere”, denke ich.

    – Koray Tugay

    20. Mai 2015 um 17:39 Uhr

  • @KorayTugay: Das hängt von den Compiler-Optionen ab, die Sie verwenden. Ich verwende Optionen, die auf dem Vorhandensein von bestehen void; Wenn Sie sich dafür entscheiden, mit schlampigeren, freizügigeren Optionen zu arbeiten, können Sie ohne davonkommen void.

    – Jonathan Leffler

    20. Mai 2015 um 17:41 Uhr

  • Genauer gesagt, die Verwendung von void hängt von der verwendeten Norm ab.

    – Qix – MONICA WURDE MISSHANDELT

    10. Februar 2017 um 2:57 Uhr

  • @Qix: Würden Sie Ihren Kommentar näher erläutern, dass „die Verwendung von void hängt vom verwendeten Standard ab’?

    – Jonathan Leffler

    10. Februar 2017 um 3:04 Uhr

  • @JonathanLeffler IIRC ANSI C erforderlich sie, aber C99 und höher besagt, dass Sie eine implementierungsdefinierte verwenden können int main() Prototyp und immer noch gültiges C sein. Die Tatsache, dass Compiler eine leere Argumentliste zulassen, ist als „implementierungsdefiniert“ zu betrachten.

    – Qix – MONICA WURDE MISSHANDELT

    10. Februar 2017 um 3:07 Uhr

Benutzer-Avatar
Edwin Buck

Es gibt mehr als eine, und obwohl die Antwort von Tor gut ist, ziehe ich es vor, immer eine argc / argv-Hauptfunktion zu verwenden.

#include <stdio.h>

int main(int argc, char** argv)
{
  printf("Hello World\n");
  return 0;
}

In dem seltenen, seltsamen Fall, dass printf auf Fehler überprüft wurde, könnten Sie darauf stoßen

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

extern int errno;
extern FILE *stdout;

int main(int argc, char** argv)
{
  errno = 0;

  int err = printf("Hello World\n");

  if (err < 0) {
    return EXIT_FAILURE;
  }

  err = fflush(stdout);

  if (err < 0 || errno != 0) {
    return EXIT_FAILURE;
  } else {
    return EXIT_SUCCESS;
  }
}

Wie jedes C-Programm wurde auch dieses viel zu oft modifiziert, um es noch weniger fehlerhaft zu machen. Besonderer Dank geht an R.., dmp und Scooter, die wirklich mehr Anerkennung verdienen, als ich geben kann.

Benutzer-Avatar
Fredrik Pihl

Die offizielle GNU Hello World finden Sie hier: http://www.gnu.org/software/hello/

Das GNU-Hello-Programm erzeugt eine vertraute, freundliche Begrüßung. Ja, dies ist eine weitere Implementierung des klassischen Programms, das „Hello, world!“ druckt. wenn Sie es ausführen.

Im Gegensatz zu der oft gesehenen Minimalversion verarbeitet GNU Hello jedoch seine Argumentliste, um sein Verhalten zu ändern, unterstützt Begrüßungen in vielen Sprachen und so weiter. Der Hauptzweck von GNU Hello besteht darin, zu demonstrieren, wie man andere Programme schreibt, die diese Dinge tun; es dient als Modell für GNU-Codierungsstandards und GNU-Maintainer-Praktiken.

GNU Hello ist in C geschrieben. Für Implementierungen in anderen Programmiersprachen, insbesondere einschließlich der Übersetzung in andere Sprachen, siehe bitte die GNU Gettext-Distribution.

  • +1 Bahahahaha, das ist großartig. Obwohl ich den ernsthaften Zweck einschätzen kann, dient es als Demo für Modell- und Codierungsstandards.

    – John Carter

    10. September 2012 um 20:26 Uhr

  • Zuerst dachte ich, es sei ein Witz, dann erinnerte ich mich an die Volltext-GPL, und jetzt glaube ich nicht, dass es ein Witz ist.

    – Qix – MONICA WURDE MISSHANDELT

    10. Februar 2017 um 2:59 Uhr

Benutzer-Avatar
Heiße Licks

Die “offizielle” wäre die in der ersten Ausgabe von “The C Programming Language” von Kernighan und Ritchie.

Nämlich:

#include <stdio.h>
main()
{
    printf("hello, world\n");
}

  • +1 Bahahahaha, das ist großartig. Obwohl ich den ernsthaften Zweck einschätzen kann, dient es als Demo für Modell- und Codierungsstandards.

    – John Carter

    10. September 2012 um 20:26 Uhr

  • Zuerst dachte ich, es sei ein Witz, dann erinnerte ich mich an die Volltext-GPL, und jetzt glaube ich nicht, dass es ein Witz ist.

    – Qix – MONICA WURDE MISSHANDELT

    10. Februar 2017 um 2:59 Uhr

Benutzer-Avatar
Carlo Perez

#include <stdio.h>

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

  • @KorayTugay: Damit das Fenster, in dem es ausgeführt wird, nicht verschwindet, bis Sie ein Zeichen darin eingegeben haben. Dies ist ein Problem bei der Verwendung von IDEs zur Entwicklung von Befehlszeilenprogrammen.

    – Jonathan Leffler

    20. Mai 2015 um 17:45 Uhr

  • @JonathanLeffler Wie hängt es mit IDEs zusammen? Terminalfenster verschwindet auch nicht.

    – Koray Tugay

    20. Mai 2015 um 19:28 Uhr

  • @KorayTugay: Welche IDE verwendest du auf welcher Plattform? Sie werden eine Menge C-Code auf SO finden, der hat system("pause"); (1.800 Fragen) bzw getch() (3.400 Fragen) bzw getchar() am Ende, damit das Programm nicht beendet wird, bis der Benutzer einige Eingaben macht, um es zu beenden. (Die rohen Zahlen stammen von Suchen nach „System Pause“ und „Getch“; einige befinden sich möglicherweise nicht am Ende ihrer Programme.) Ich verstehe, dass dies daran liegt, dass insbesondere die Terminalfenster unter Windows verschwinden, wenn der Befehl beendet wird. Ich bin vor einigen Jahren (auf dem Mac) auf ähnliche Probleme mit Eclipse und CDT gestoßen.

    – Jonathan Leffler

    20. Mai 2015 um 19:34 Uhr

  • @JonathanLeffler Ich bin total verloren. Trotzdem danke für deine Antwort und deine Zeit. Kein großes Problem, denke ich..

    – Koray Tugay

    21. Mai 2015 um 5:18 Uhr

  • Err, das ist normalerweise für Leute, die .exe-Dateien direkt aus den Datei-Explorern unter Windows ausführen, da eine Konsole, wenn sie im Konsolenmodus kompiliert wird, normalerweise aufblitzt und verschwindet, bevor Sie Text lesen können.

    – Qix – MONICA WURDE MISSHANDELT

    10. Februar 2017 um 3:02 Uhr

1355100cookie-checkRichtiges Hallo Welt in C [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy