1. 程式人生 > >C語言中結構體變數之間賦值

C語言中結構體變數之間賦值

/**********************************************************************
* 版權所有 (C)2015, Zhou Zhaoxiong。
*
* 檔名稱:Struct2Struct.c
* 檔案標識:無
* 內容摘要:結構體變數之間的賦值
* 其它說明:無
* 當前版本:V1.0
* 作    者:Zhou Zhaoxiong
* 完成日期:20150227
*
**********************************************************************/
#include 
#include 
 
 
// 重定義資料型別
typedef unsigned char UINT8;
typedef unsigned int  UINT32;
typedef signed   int  INT32;
 
// 定義結構體
typedef struct
{
   UINT8   szName[100];   // 姓名
   UINT32  iAge;          // 年齡
   UINT8   szId[100];     // 工號
} T_EmployeeInfo;
 
 
/**********************************************************************
* 功能描述:主函式
* 輸入引數:無
* 輸出引數:無
* 返 回 值:無
* 其它說明:無
* 修改日期        版本號     修改人            修改內容
* -------------------------------------------------------------------
* 20150227       V1.0     Zhou Zhaoxiong        建立
***********************************************************************/
INT32 main()
{
       T_EmployeeInfo tEmployeeInfoSrc    = {0};      // 源訊息結構體
       T_EmployeeInfo *ptEmployeeInfoDest = NULL;     // 目的訊息結構體
       T_EmployeeInfo *ptEmployeeInfoMid  = NULL;     // 中間訊息結構體
 
       // 手動輸入源訊息
       printf("Please input the source info: \n");
       printf("Name: \n");
       scanf("%s", tEmployeeInfoSrc.szName);
       printf("Age: \n");
       scanf("%d", &(tEmployeeInfoSrc.iAge));
       printf("Id: \n");
       scanf("%s", tEmployeeInfoSrc.szId);
 
       // 將源訊息賦給目的訊息結構體
       ptEmployeeInfoDest = &tEmployeeInfoSrc;   // 指標 = &變數
       // 列印目的訊息結構體中的各個變數的值
       printf("The dest info is: Name=%s, Age=%d, Id=%s\n", ptEmployeeInfoDest->szName, ptEmployeeInfoDest->iAge, ptEmployeeInfoDest->szId);
 
       // 將目的訊息賦給中間訊息結構體
       ptEmployeeInfoMid = ptEmployeeInfoDest;   // 指標 = 指標
       // 列印中間訊息結構體中的各個變數的值
       printf("The mid info is: Name=%s, Age=%d, Id=%s\n", ptEmployeeInfoMid->szName, ptEmployeeInfoMid->iAge, ptEmployeeInfoMid->szId);
 
       // 改變目的訊息結構體中的某個變數的值
       ptEmployeeInfoDest->iAge = ptEmployeeInfoDest->iAge + 1;
 
       // 將目的訊息賦給源訊息結構體
       memcpy(&tEmployeeInfoSrc, ptEmployeeInfoDest, sizeof(T_EmployeeInfo)); // memcpy(&變數, 指標, 長度)
       // 列印源訊息結構體中的各個變數的值
       printf("The source info is: Name=%s, Age=%d, Id=%s\n", tEmployeeInfoSrc.szName, tEmployeeInfoSrc.iAge, tEmployeeInfoSrc.szId);
 
       return 0;
}