初学C语言(也是第一次接触编程),求问这个在使用函数指针中报的错是什么意思
更新:2018-12-18
浏览:1+次
#include<stdio.h>
#include<conio.h>
#include<string.h>
struct stu{
char name[40];
char number[40];
char from[40];
char ID[20];
int age;
char address[40];
char sex;
char tel[20];
};
int input(struct stu *p,char *c,int *n);
int search(struct stu *p,char *c,int *n);
int print(struct stu *p,char *c,int *n);
int out(struct stu *p,char *c,int *n);
int quit(struct stu *p,char *c,int *n);
typedef int (*power)(struct stu *p,char *c,int *n);
int menu();
int main()
{
struct stu array[20],*p=array;
power c[4]={input,search,out,quit};
char d[20];int n=0,T=0;
int i=0;
do
{
i=menu();
T=c[i-1](p,d,&n);
} while (T!=-2);
return 0;
}
int menu()
{
int i;printf("1: 输入基本信息 2:检索 3: 输出全体记录 4:退出\n");
scanf("%d",&i);return i;
}
int input(struct stu *p,char *,int *n)
{
int k=0;
printf("输入你想录入的数据个数:\n");
scanf("%d",&k);
int i=*n;
*n+=k;
for(;i<*n;i++){
printf("第%d个人的信息:\n",i+1);
printf("请输入姓名:\n");
scanf("%s",(*(p+i)).name);
fflush(stdin);
printf("请输入学号:\n");
scanf("%s",(*(p+i)).number);
fflush(stdin);
printf("请输入籍贯:\n");
scanf("%s",(*(p+i)).from);
fflush(stdin);
printf("请输入身份证号:\n");
scanf("%s",(*(p+i)).ID);
fflush(stdin);
printf("请输入年龄:\n");
scanf("%d",&(*(p+i)).age);
fflush(stdin);
printf("请输入家庭住址:\n");
scanf("%s",(*(p+i)).address);
fflush(stdin);
printf("请输入性别:\n");
scanf("%c",&(*(p+i)).sex);
fflush(stdin);
printf("请输入联系方式:\n");
scanf("%s",(*(p+i)).tel);
fflush(stdin);}
return 0;
}
int search(struct stu *p,char *c,int *n)
{
printf("请输入名字或者学号:\n");
gets(c);
int i=0;
for(;i<*n;i++)
{
if(strcmp((*(p+i)).name,c)==0||strcmp((*(p+i)).number,c)==0)break;
}
printf("%d",i);
return(i==*n)? -1:i;
}
int out(struct stu *p,char *,int *i)
{
fflush(stdin);
for(int n=0;n<*i;n++)
{
printf("%s %s %s %s %d %s %c %s\n",(*(p+n)).name,(*(p+n)).number,(*(p+n)).from,(*(p+n)).ID,(*(p+n)).age,(*(p+n)).address,(*(p+n)).sex,(*(p+n)).tel);
}
return 0;
}
int quit(struct stu *,char *,int)
{
return -2;
}