首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言新手有几个小问题求解,关于校通讯录的输入函数有关问题

2013-03-28 
C语言新手有几个问题求解,关于校通讯录的输入函数问题想使用自己定义的Stu_input函数来完成数据录入的工作

C语言新手有几个问题求解,关于校通讯录的输入函数问题
想使用自己定义的Stu_input函数来完成数据录入的工作,结果编译时提示Stu_input函数那里出错。自己又找不到到底哪里出错了。把Stu_input整个函数注释掉之后编译时不会报错了,但运行又会报错。新人第一帖,请各位高手给指点指点

#include<stdio.h>
#include<stdlib.h>
typedef struct{
char id[5];//学生学号
char name[11];//学生名字
int age;//学生年龄 
int math;//数学成绩 
int eng;//英语成绩 
int ds;//数据结构成绩
int os;//操作系统成绩
}Student_type;

void Stu_print(Student_type print){//按顺序输出数组内各个数据
printf("Student id: %s\n",print.id[5]);
printf("Student name: %s\n",print.name[11]);
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);
return 0;
}
C input 通讯录
[解决办法]
1、
void Stu_print(Student_type print){    //按顺序输出数组内各个数据
    printf("Student id: %s\n",print.id[5]);
    printf("Student name: %s\n",print.name[11]);


越界,print.id和print.name就行了;
2、Student_type *data指向的是一个student,你想声明一组要用Student_type **data,
3、至于input没看出错来;
[解决办法]
我在vc2005里进行调试了下,没问题,我这没有vs2012的环境,很抱歉。看你在4楼所描述的错误信息,你自己可以试着修改下。
全部代码如下:

#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);// 非print.id[5],print.id[5]表示id字符数组中的第5个元素,如果你的id为:123,就不会有id[5]这个元素被打印出来。
printf("Student name: %s\n",print.name);// 非print.name[11]
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语言新手有几个小问题求解,关于校通讯录的输入函数有关问题

热点排行