函数说明
-
char *arr[4][5]数组存储学生基本信息.
-
FindByName(int a,int b,char *arr[a][b], char *name,char *student[b])函数参数a,b,arr[a][b]为主函数中的学生信息,name为需要查找的学生的姓名,用参数student[b]存储根据姓名找到的学生信息,类型为指针,所有直接可以传递数据。
-
strcmp(arr[i][0], name) 函数比较两参数字符串是否相等,相等则返回0.
函数实现
#include <stdio.h>
#include <string.h>
/**
* 通过姓名找到学生的信息并打印
* @param a
* @param b
* @param arr
* @param name
* @param student
*/
void FindByName(int a,int b,char *arr[a][b], char *name,char *student[b])
{
int j=0;
for(int i=1;i<a;i++)
{
if(strcmp(arr[i][0], name) == 0)
j=i;
}
if(j!=0)
{
for(int i=0;i<b;i++)
student[i]=arr[j][i];
}
else{
printf("未找到该学生信息!");
}
}
int main() {
char *arr[4][5] = {{"姓名","性别","年龄","专业","年级"},
{"张三","男","19","计算机","大一"},
{"李四","女","20","文学","大二"},
{"王五","男","22","航空","大四"}};
/*
* 打印学生表
for(int i=0;i<4;i++)
{
for(int j=0;j<5;j++)
printf("%s\t",arr[i][j]);
printf("\n");
}*/
char *student[5]={""};
char name[10]="";
printf("请输入需要查找的学生的姓名:");
gets(name);
FindByName(4,5,arr,name,student);
if(student[0]!="")
{
for(int i=0;i<5;i++)
{
printf("%s:",arr[0][i]);
printf("%s\n",student[i]);
}
}
return 0;
}