[C] 纯文本查看 复制代码#define _CRT_SECURE_NO_WARNINGS
#define N 2
#include
#include
#include
typedef struct Teacher
{
char name[32];//老师名字
char *a_name;//老师别名
char **stuname;//学生名字
int age;//年龄
}tea;
//输出
int print_Arr(tea *tArray, int num)
{
int i = 0, j = 0;
if (tArray == NULL)
{
printf("err fuc print_Arr() if (tArray == NULL)\n");
return -1;
}
for (i = 0; i < num; i++)
{
printf("%d ", tArray[i].age);
printf(" %s ", tArray[i].name);
printf("%s ", tArray[i].a_name);
for (j = 0; j < N; j++)
{
printf("%s ", tArray[j].stuname);
}
puts("\n");
}
return 0;
}
//排序
int sort_Array(tea *tArray, int num)
{
int i = 0, j = 0;
tea tmp;
if (tArray == NULL)
{
printf("err fuc sort_Array() if (tArray == NULL)\n");
return -1;
}
for (i = 0; i < num; i++)
{
for (j = i + 1; j < num; j++)
{
if (tArray[i].age > tArray[j].age)
{
tmp = tArray[i];
tArray[i] = tArray[j];
tArray[j] = tmp;
}
}
}
return 0;
}
//释放
int free_Array(tea *tArr, int num)
{
int i = 0, j = 0;
if (tArr == NULL)
{
printf("err fuc free_Array() if (tArr == NULL)\n");
return -1;
}
for (i = 0; i < num; i++)
{
char**p = tArr[i].stuname;
if (tArr[i].a_name != NULL)
{
free(tArr[i].a_name);
}
if (p[i] != NULL)
{
free(p[i]);
}
if (tArr[i].stuname != NULL)
{
free(tArr[i].stuname);
}
}
if (tArr != NULL)
{
free(tArr);
}
return 0;
}
//写入
int write_Arr(tea *tArr)
{
int i = 0;
int j = 0;
if (tArr == NULL)
{
printf("err fuc free_Array() if (tArr == NULL)\n");
return -1;
}
for (i = 0; i < N; i++)
{
puts("请输入年龄:");
scanf("%d", &tArr[i].age);
puts("请输入姓名:");
scanf("%s", tArr[i].name);
puts("请输入别名:");
scanf("%s", tArr[i].a_name);
for (j = 0; j < N; j++)
{
puts("请输入学生姓名:\n");
scanf("%s", tArr[j].stuname);
}
}
return 0;
}
//初始化
tea* creattArr(int num)
{
int i = 0;
int j = 0;
tea *p1 = (tea *)malloc(num* sizeof(tea));
if (p1 == NULL)
{
return 0;
}
for (i = 0; i < num; i++)
{
memset(p1 + i, 0, sizeof(tea));
p1[i].a_name = (char*)malloc(128 * sizeof(char));
memset(p1[i].a_name, 0, 128 * sizeof(char));
{
char** p2 = (char **)malloc(N * sizeof(char *));
for (j = 0; j < num; j++)
{
p2[j] = (char *)malloc(128 * sizeof(char));
memset(p2[j], 0, 128 * sizeof(char));
}
p1[i].stuname = p2;
}
}
return p1;
}
void main()
{
tea *tArray = creattArr(N);//初始化
if (tArray == NULL)
{
printf("err func main() if (tArray == NULL)\n");
system("pause");
return;
}
write_Arr(tArray);
printf("sorting\n");
print_Arr(tArray, N);
sort_Array(tArray, N);
printf("\nsorted\n");
print_Arr(tArray, N);
free_Array(tArray, N);
system("pause");
}