C語言中結構體變數之間賦值
阿新 • • 發佈:2019-01-08
/********************************************************************** * 版權所有 (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; }