当前位置:C++技术网 > 资讯 > 初学C语言(也是第一次接触编程),求问这个在使用函数指针中报的错是什么意思

初学C语言(也是第一次接触编程),求问这个在使用函数指针中报的错是什么意思

更新时间:2018-12-18 17:55:57浏览次数: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;
}