读书人

为何用c的规范写了个程序源代码后缀为

发布时间: 2013-03-28 10:20:24 作者: rapoo

为什么用c的规范写了个程序源代码后缀为.c结果不能通过编译,换成.cpp后却编译通过了??(VS2012编译器)
RT,明明是使用c的规范写的程序为什么只有源代码文件后缀改为.cpp才能通过编译(.c后缀会提示error)???求高手解释...
代码如下:

#include<stdio.h> 
#include<stdlib.h>
typedef struct
{
charid[5]; // 学生学号
charname[11]; // 学生名字
intage; // 学生年龄 
intmath; // 数学成绩 
inteng; // 英语成绩 
intds; // 数据结构成绩
intos; // 操作系统成绩
}Student_type;

void Stu_print(Student_type print)
{ //按顺序输出数组内各个数据
printf("Student id: %s\n",print.id);
printf("Student name: %s\n",print.name);
printf("Student age: %d\n",print.age);
printf("Student math: %d\n",print.math);
printf("Student eng: %d\n",print.eng);
printf("Student ds: %d\n",print.ds);
printf("Student os: %d\n",print.os);
}

void Stu_input(Student_type &dat)
{
printf("Please input student's id: ");
scanf("%s",dat.id);
printf("Please input student's name: ");
scanf("%s",dat.name);
printf("Please input student's age: ");
scanf("%d",&dat.age);
printf("Please input student's math: ");
scanf("%d",&dat.math);
printf("Please input student's eng: ");
scanf("%d",&dat.eng);
printf("Please input student's ds: ");
scanf("%d",&dat.ds);
printf("Please input student's os: ");
scanf("%d",&dat.os);
}

int main()
{
int i,stunum=0;

Student_type *data;
printf("Input stunum: ");
scanf("%d",&stunum); //记录需要开辟的空间

data=(Student_type *)malloc(stunum*sizeof(Student_type));

for(i=0;i<stunum;++i)
{
Stu_input(*(data+i));
}

for(i=0;i<stunum;++i)
{
Stu_print(*(data+i));
}

free(data);

system("pause");
return 0;
}

编译器 c
[解决办法]
第二十五行
void Stu_input(Student_type &dat)
传参数不能加&,c语言不支持引用
[解决办法]
void Stu_input(Student_type &dat)
改为
void Stu_input(Student_type* dat)
里面改为->

for(i=0;i<stunum;++i)
{
Stu_input(*(data+i));
}

for(i=0;i<stunum;++i)
{
Stu_print(*(data+i));
}

你这两个也有问题 你只malloc了一个data 却去遍历stunum个结构 代码也跑不起来

读书人网 >C语言

热点推荐