字符串流对象的一个小程序报错,该如何处理

字符串流对象的一个小程序报错
代码如下所示:
C/C++ code

#include<strstream>
#include<iostream>
using namespace std;

struct student
{int num;
char name[20];
float score;
}

int main()
{
student stud[3]={1001,"li",78,1002,"wang",89.5,1004,"fun",90};
char c[50];
ostrstream strout(c,30);
for(int i=0;i<3;i++)
strout<<stud[i].num<<stud[i].name<<stud[i].score;
strout<<ends;
cout<<"array c:"<<c<<endl;
}


编译时报错如下:
error C2628: “student”后面接“int”是非法的(是否忘记了“;”?)
error C3874: “main”的返回类型应为“int”而非“student”
这个错误很少见,它怎么就要求返回值应该是student 类型呢?按它说的修改就更不对了。大家看看是什么地方错了,谢谢。

------解决方案--------------------
C/C++ code
#include<strstream>
#include<iostream>
using namespace std;

struct student
{int num;
char name[20];
float score;
}
//1
;

int main()
{
//2
student stud[3]={{1001,"li",78},{1002,"wang",89.5},{1004,"fun",90}};
char c[50];
ostrstream strout(c,30);
for(int i=0;i<3;i++)
strout<<stud[i].num<<stud[i].name<<stud[i].score;
strout<<ends;
cout<<"array c:"<<c<<endl;
//3
return 0;
}

------解决方案--------------------
struct student
{int num;
char name[20];
float score;
} //这里掉了分号!!!注意怎么定义结构体的。。。

还有main函数 你没返回值。。。加一句 return 0;
student stud[3]={1001,"li",78,1002,"wang",89.5,1004,"fun",90};
char c[50];
ostrstream strout(c,30);
for(int i=0;i<3;i++)
strout<<stud[i].num<<stud[i].name<<stud[i].score;
strout<<ends;
cout<<"array c:"<<c<<endl;
return 0;