#include <stdio.h>
#include <stdlib.h>
enum StructType{CHAR = 1,INT,FLOAT,DOUBLE}; // 열거형
union DataType{ // 공용체
char a;
int b;
float c;
double d;
};
struct DataStruct{ // 구조체
enum StructType AA;
union DataType BB;
};
void mallocex(){ // 동적할당
int n;
int i;
struct DataStruct *use;
printf("Input size : ");
scanf_s("%d", &n); // 사이즈 입력
use = (struct DataStruct *)malloc(sizeof(struct DataStruct)*n); // 동적할당
for(i=0; i<n; i++){ // 사이즈만큼 입력
printf("selsect type\n");
printf("1.Char\t2.Int\t3.float\t4.Double\n--->"); // type 입력
scanf_s("%d", &use[i].AA);
if(use[i].AA == 1){ // 캐릭터
printf("Input Char size[%d] : ", i);
fflush(stdin);
scanf_s("%c", &use[i].BB.a);
}
else if(use[i].AA == 2){ // 정수
printf("Input Int size[%d] : ", i);
fflush(stdin);
scanf_s("%d", &use[i].BB.b);
}
else if(use[i].AA == 3){ // 플롯트
printf("Input Float size[%d] : ", i);
fflush(stdin);
scanf_s("%f", &use[i].BB.c);
}
else if(use[i].AA == 4){ // 더블
printf("Input Double size[%d] : ", i);
fflush(stdin);
scanf_s("%lf", &use[i].BB.d);
}
}
for(i=0; i<n; i++){ // 플래그따라서 출력
if(use[i].AA == 1){
printf("Char size[%d] : %c\n", i, use[i].BB.a);
}
else if(use[i].AA == 2){
printf("Int size[%d] : %d\n", i,use[i].BB.b);
}
else if(use[i].AA == 3){
printf("Float size[%d] : %f\n", i,use[i].BB.c);
}
else if(use[i].AA == 4){
printf("Double size[%d] : %lf\n", i,use[i].BB.d);
}
}
free(use); // 자유화
}
void main(){
mallocex();
}