25

C 中正确的 Hello World 程序是什么?

由于“c hello world”的谷歌结果第一页差异很大,而且很多是旧的C,我想把标准版本放在一个地方,方便复制和粘贴。

4

10 回答 10

86

看你有多懒::)

#error Hello World
于 2012-09-10T23:50:56.020 回答
52

我相信这是 C 语言中的标准 Hello World 程序:

#include <stdio.h>

int main(void)
{
  printf("Hello World\n");
  return 0;
}
于 2012-09-10T16:26:34.437 回答
18

在 C99 或 C2011 中,您可以使用以下五行代码:

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

由于 C99(但不是 C89)允许您return 0;在末尾省略 ,因此它会向调用环境返回确定性状态 0(成功)。它没有任何未使用的函数参数。它具有puts()来自标题的原型。输出包括适当的行尾。我认为这是犹太洁食,基本上是最小的。

于 2012-09-10T22:10:13.903 回答
10

官方 GNU Hello World 可以在这里找到:http ://www.gnu.org/software/hello/

GNU Hello 程序会产生熟悉、友好的问候语。是的,这是打印“Hello, world!”的经典程序的另一个实现。当你运行它时。

然而,与常见的最小版本不同,GNU Hello 处理其参数列表以修改其行为,支持多种语言的问候语等等。GNU Hello 的主要目的是演示如何编写其他程序来做这些事情;它作为 GNU 编码标准和 GNU 维护者实践的模型。

GNU Hello 是用 C 语言编写的。对于其他编程语言的实现,特别是包括翻译成其他语言,请参阅 GNU Gettext 发行版。

于 2012-09-10T20:13:47.660 回答
10

不止一个,虽然 Tor 的回答很好,但我更喜欢总是使用 argc / argv main 函数。

#include <stdio.h>

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

在检查 printf 是否失败的罕见奇怪事件中,您可能会遇到

#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;
  }
}

像任何 C 程序一样,它已经被修改了太多次以试图减少它的错误。特别感谢 R..、dmp 和 Scooter,他们真的值得我给予更多的信任。

于 2012-09-10T16:27:44.933 回答
4

“官方”版本是 Kernighan 和 Ritchie 所著的“The C Programming Language”第一版中的版本。

也就是说

#include <stdio.h>
main()
{
    printf("hello, world\n");
}
于 2012-09-10T21:23:01.253 回答
4
#include <stdio.h>

int main()
{
  printf("Hello World\n");
  getchar();
  return 0;
}
于 2012-12-06T01:20:30.277 回答
3

“正确”是什么意思?

我想这个是最正确的,因为它不会遗漏任何东西:

#include <stdio.h>

#ifndef HELLO_STRING
#define HELLO_STRING "Hello, world!"
#endif

int main(int argc, char *argv[], char *envp[])
{
    puts(HELLO_STRING);
    return 0;
}

但是,这个程序没有本地化;如果您想要本地化,请使用“libintl”。

于 2012-09-10T16:32:44.090 回答
2
$ cat hello.c
#include <stdio.h>

int main(void)
{
    printf("Hello world!\n");
}

$ c99 hello.c
$ ./a.out
Hello world!
$
于 2012-09-10T20:43:10.593 回答
-1

然后是:

#include <stdlib.h>

int main()
{
  system("echo Hello World!");
  return 0;
}
于 2012-09-10T23:45:27.910 回答