本文共 1906 字,大约阅读时间需要 6 分钟。
XDR-定长数组的使用
2014年4月7日20:24:31
定义一个.x文件,lww.x。文件内容如下:
enum colors{ RED = 2, YELLOW = 3, BLUE = 5, GREEN = 0x10};struct lww_int{ int m_nAge; bool m_bMale; string m_sName<255>; colors m_ayColor[2];};C程序:
#include#include #include "lww.h"//int main()//{// printf("begin\n");//// FILE * pFile = fopen("lww.txt","wb");// XDR XDR;// xdrstdio_create(&XDR,pFile,XDR_ENCODE);//// colors aRED = RED;// colors aYELLOW = YELLOW;// colors aBLUE = BLUE;// colors aGREEN = GREEN;// lww_int aLwwInt;// aLwwInt.m_nAge = 28;// aLwwInt.m_bMale = TRUE;// aLwwInt.m_sName = (char *)"1234";// aLwwInt.m_ayColor[0] = GREEN;// aLwwInt.m_ayColor[1] = BLUE;//// xdr_colors(&XDR,&aRED);// xdr_colors(&XDR,&aYELLOW);// xdr_colors(&XDR,&aBLUE);// xdr_colors(&XDR,&aGREEN);// xdr_lww_int(&XDR,&aLwwInt);//// xdr_destroy(&XDR);// fclose(pFile);//// printf("end\n");//// return 0;//}void printColor(colors aColor){ switch(aColor) { case RED: printf("红色\n"); break; case YELLOW: printf("黄色\n"); break; case BLUE: printf("蓝色\n"); break; case GREEN: printf("绿色\n"); break; default: printf("错误色\n"); break; } return;}void printBool(bool_t bPrint){ switch(bPrint) { case TRUE: printf("真\n"); break; case FALSE: printf("假\n"); break; default: printf("错误\n"); break; } return;}int main(){ printf("begin\n"); FILE * pFile = fopen("lww.txt","rb"); XDR XDR; xdrstdio_create(&XDR,pFile,XDR_DECODE); colors aColor; char sName[255] = {0}; lww_int aLwwInt; aLwwInt.m_sName = sName; xdr_colors(&XDR,&aColor); printColor(aColor); xdr_colors(&XDR,&aColor); printColor(aColor); xdr_colors(&XDR,&aColor); printColor(aColor); xdr_colors(&XDR,&aColor); printColor(aColor); xdr_lww_int(&XDR,&aLwwInt); printf("%d\n",aLwwInt.m_nAge); printBool(aLwwInt.m_bMale); printf("%s\n",aLwwInt.m_sName); printColor(aLwwInt.m_ayColor[0]); printColor(aLwwInt.m_ayColor[1]); xdr_destroy(&XDR); fclose(pFile); printf("end\n"); return 0;}
转载地址:http://wnwci.baihongyu.com/