[C言語]:構造体とtypedefの例


typedefの例を開く

ステップ1>typedefで定義したデータ型を使用して変数を宣言します。


<コード>

#include <stdio.h>

typedef unsigned short int UK;

int main()
{
	unsigned short int data = 5;
	UK arr;
	arr = data;
	printf("temp = %d\n", arr);

}

<結果>


  • typedefとstructが重要な部分を占めている.
  • 問題2)構造体を用いて人体情報を入力出力する


    <コード>

    #include <stdio.h>
    
    typedef struct People
    {
    	char name[10];
    	unsigned short int age;
    	float height;
    	float weight; 
    
    } Person_p;
    
    int main()
    {
    	Person_p data;
    	printf("상대방의 정보를 입력하시오. > \n");
    	printf(" 이름 : ");
    	scanf_s("%s", data.name, 10);
    	printf(" 나이 : ");
    	scanf_s("%hu", &data.age);
    	printf(" 키 : ");
    	scanf_s("%f", &data.height);
    	printf(" 몸무게 : ");
    	scanf_s("%f", &data.weight);
    	printf(" \n 정보는 이와 같다. \n");
    	printf("%s : %d세, %.1fcm\n, %.1fkg\n", data.name, data.age, data.height, data.weight);
    
    }
  • 参照https://blog.naver.com/tipsware/221200252889
    詳細については、scanf関数
  • のクリーンアップを参照してください.

    <結果>



    質問3>友人情報管理計画

  • タスクメニュー:main関数で処理
  • プログラムが提供する機能をユーザが選択できるようにする.
  • 友達追加:AddF
  • scanf sは、1人あたり最大5名を入力します.5人以上のユーザが受信されると、入力はエラー
  • とみなされます.
  • 友人リストの表示:showF
  • 入力した友達リストを表示
  • <コード>

    #include <stdio.h>
    #define MAX_ARR 5
    
    typedef char NAME_TYPE[15];
    
    int AddF(NAME_TYPE* p_name, unsigned short int* p_age, float* p_height, float* p_weight, int count)
    {
    	if (count < MAX_ARR)
    	{
    		printf("\n 새로운 친구 정보를 입력하세요 \n");
    		printf("1. 이름 :");
    		scanf_s("%s", *(p_name + count), 15); // &로 받지 않기 때문에.
    		printf("2. 나이 : ");
    		scanf_s("%hu", p_age + count);
    		printf("3. 키 :");
    		scanf_s("%f", p_height + count);
    		printf("4. 몸무게 : ");
    		scanf_s("%f", p_weight + count);
    		printf(" 입력을 완료했다. \n\n");
    		return 1;
    
    	}
    	else {
    		printf("최대 인원을 초과하여 입력 할 수 없다. \n");
    		printf(" 최대 %d명까지만 관리 가능하다.\n\n", MAX_ARR);
    	}
    	return 0;
    }
    
    
    void showF(NAME_TYPE* p_name, unsigned short int* p_age, float* p_height, float* p_weight, int count)
    {
    	int i;
    	if (count > 0)
    	{
    		printf("\n 등록된 친구 목록 \n");
    		printf("==========================\n");
    		for (int i = 0; i < count; i++)
    		{
    			printf("%-14s, %3d, %6.2f, %6.2f\n", *(p_name + i), *(p_age + i), *(p_height + i), *(p_weight + i));
    
    		}
    		printf(" ==========================\n\n");
    	}else {
    	
    		printf(" \n 등록된 친구가 없습니다. \n\n");
    	
    	}
    
    }
    int main()
    {
    	NAME_TYPE name[MAX_ARR];
    	unsigned short int age[MAX_ARR];
    	float height[MAX_ARR];
    	float weight[MAX_ARR];
    	int count = 0, num;
    
    	while (1) {
    
    		printf("           [메뉴]          \n");
    		printf("==============================\n");
    		printf("1. 친구 추가 \n");
    		printf("2. 친구 목록 보기\n");
    		printf("3. 종료  \n");
    		printf("=============================\n");
    		printf(" 번호 선택 : ");
    		scanf_s("%d", &num);
    		if (num == 1) {
    			if (1 == AddF(name, age, height, weight, count)) count++;}
    		else if (num == 2) {
    			showF(name, age, height, weight, count);
    			}
    		else if (num == 3) {
    				break;
    			}
    		else {
    				printf("1~3번만 선택가능하다.\n\n");
    			}
    		}
    
    
    }
    
    
    <結果>

    =>構造体を用いて実施する。

    #include <stdio.h>
    #define MAX_ARR 5
    
    typedef struct People
    {
    	char name[14];
    	unsigned short int age;
    	float height;
    	float weight;
    
    }Person;
    
    int AddF(Person *p_friend, int count)
    {
    	if (count < MAX_ARR)
    	{
    		p_friend = p_friend + count;
    		printf("\n 새로운 친구 정보를 입력하세요 \n");
    		printf("1. 이름 :");
    		scanf_s("%s", p_friend->name, 14); // &로 받지 않기 때문에.
    		printf("2. 나이 : ");
    		scanf_s("%hu", &p_friend->age); 
    		printf("3. 키 :");
    		scanf_s("%f", &p_friend->height);
    		printf("4. 몸무게 : ");
    		scanf_s("%f", &p_friend->weight);
    		printf(" 입력을 완료했다. \n\n");
    		return 1;
    
    	}
    	else {
    		printf("최대 인원을 초과하여 입력 할 수 없다. \n");
    		printf(" 최대 %d명까지만 관리 가능하다.\n\n", MAX_ARR);
    	}
    	return 0;
    }
    
    
    void showF(Person *p_friend, int count)
    {
    	int i;
    	if (count > 0)
    	{
    		printf("\n 등록된 친구 목록 \n");
    		printf("==========================\n");
    		for (int i = 0; i < count; i++)
    		{
    			printf("%-14s, %3d, %6.2f, %6.2f\n", p_friend->name, p_friend->age, p_friend->height, p_friend->weight);
    			p_friend++;
    
    		}
    		printf(" ==========================\n\n");
    	}else {
    	
    		printf(" \n 등록된 친구가 없습니다. \n\n");
    	
    	}
    
    }
    int main()
    {
    	Person friends[MAX_ARR];
    	int count = 0, num;
    
    	while (1) {
    
    		printf("           [메뉴]          \n");
    		printf("==============================\n");
    		printf("1. 친구 추가 \n");
    		printf("2. 친구 목록 보기\n");
    		printf("3. 종료  \n");
    		printf("=============================\n");
    		printf(" 번호 선택 : ");
    		scanf_s("%d", &num);
    		if (num == 1) {
    			if (1 == AddF(friends, count)) count++;
    		}else if (num == 2) {
    			showF(friends, count);
    			}
    		else if (num == 3) {
    				break;
    			}
    		else {
    				printf("1~3번만 선택가능하다.\n\n");
    			}
    		}
    
    
    }
    
    
    
    <結果>