如何使用scanf()而不包括stdio.h

时间:2013-08-13 10:44:43

标签: c

是否有任何可能的方法来编写C程序而不包括stdio.h作为头文件。有人建议可以通过声明extern int scanf(char* format, ...);

来实现
#include <stdio.h> //I want this same code to work without including this line

int main ()
{
  char str [80];
  scanf ("%s",str);  
  return 0;
}

2 个答案:

答案 0 :(得分:10)

您可以使用:

声明scanf功能
extern int scanf(const char *format, ...);

extern关键字是可选的,但我想将其包含在内,以提醒函数是在其他地方定义的。

您的示例将如下所示:

extern int scanf(const char *format, ...);

int main ()
{
  char str [80];
  scanf ("%s",str);  
  return 0;
}

答案 1 :(得分:1)

在C-89中,该代码将在没有#include的情况下编译,因为函数原型是可选的。

说到哪个,它属于“非常糟糕的事情”列表 - scanf可能是一个宏,它可能有一个或多个必需的参数,......

所以你可以做到,但这就像晚上开车时没有任何灯光。即使你认为你知道这条路,你也有可能崩溃。