简单的C程序,它将读取行数,并在用户输入EOF后终止

时间:2015-10-08 13:11:15

标签: c

#include <stdio.h>

int read_next_line()
{
    int ch;
    int flag=0;
    ch=getchar();
    while(ch!= EOF && ch!='\n') {
        ch=getchar();
        flag=1;
    }
    return flag || (ch=='\n');
}
int read_all_lines()
{
    int linecount=0;
    int isvalid;
    while(!feof(stdin)) {
        isvalid=read_next_line();
        linecount=linecount + isvalid;
    }
    return linecount;
}

main {
    read_all_lines();
}

上面的代码给出了一个错误,指出main没有类型。 如何解决问题?

4 个答案:

答案 0 :(得分:4)

template <typename T> class Base { ... inline Base(); inline void display(); inline T sum(); }; // definitions... 是一个像其他函数一样返回值的函数。如果没有返回mainvoid main(void){ }值,则由您自行决定,如果没有遇到错误,则在POSIX系统中返回int。更复杂但可读性更强的是0

exit(EXIT_SUCCESS);

答案 1 :(得分:1)

大多数环境中适当的原型是:

int main(int argc, char *argv[])

这意味着:

  • main()是一个返回int
  • 的函数
  • 它有一个名为argc的参数,它是命令行参数的数量。
  • 它有一个名为argv的参数,它是这些参数的数组。

答案 2 :(得分:0)

它应该是int main()而不是简单的

答案 3 :(得分:0)

因为C98我认为,C不允许声明一个函数而不再使用返回类型的结果。你必须将main声明为

int main ()
{
    ...
}

这是使您的代码可编辑的最低要求。在以前的C语言版本中,允许声明一个像你所做的功能。隐含地,编译器认为它是一个int函数而没有任何抱怨。但是,为确保您的编译器配置为编译后C98或更高版本的代码,它会引发错误。以前版本的实际编译器通常会发出警告,告诉您main将被假定为int函数,这是为了能够编译前ANSI代码

顺便说一下,下次不要限制自己来解释你编码的内容。在这里剪切并粘贴你的实际代码,以及你从编译器得到的确切错误(可能,这只是一个警告,但你没有包含它,所以我们永远不会知道)可能错误是不是你想到的地方,这样可以节省我们的时间,而且你需要接受这个投诉。