c语言常量086为什么不合法,[c语言]求大牛帮我看看这段代码到底要怎么办才不会报异常...

[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");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值