博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

二维数组

Posted on 2019-12-12 20:58  PorkerFace  阅读(89)  评论(0编辑  收藏  举报
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

typedef struct _Ateacher {
	int id;
	char *name;
	char **stu;
}Teacher_t;

Teacher_t *createTeacher(int n)
{
	int i = 0, j = 0;
	Teacher_t *st = NULL;
	
	st = (Teacher_t *)malloc(n*sizeof(Teacher_t));
	for (i = 0; i < n; i++)
	{
		st[i].name = (char *)malloc(100);
		
		st[i].stu = (char **) malloc(sizeof(char *));
		for (j = 0; j < n; j++)
		{
			st[i].stu[j] = (char *)malloc(100);
		}
	}
	
	return st;
}

void printst(Teacher_t *st)
{
	int i = 0, j = 0;
	
	for( i = 0; i < 3; i++)
	{
		printf("Tname: %s, Tid: %d \t ->>> stu info", st[i].name, st[i].id);
	
		for ( j = 0; j < 3; j ++)
		{
			printf("\tSname%d: %s", j, st[i].stu[j]);
		}
		printf("\n");
	}
}

int main()
{
	Teacher_t *st = NULL;
	int i = 0, j = 0;

	st = createTeacher(3);
	for( i = 0; i < 3; i++)
	{
		st[i].id = i;
		printf("input name [%d]: ", sizeof(st[i].name));
		scanf("%s", st[i].name);
		
		printf("input stu info\n");
		for ( j = 0; j < 3; j ++)
		{
			printf("\t[%d]input name%d: ",  sizeof(st[i].stu[j]), j);
			scanf("%s", st[i].stu[j]);
		}
	}
	printst(st);
	
	return 0;
}

  

二维指针及结构体使用