用柔性数组处理Pascal字符串内存块
来源:互联网 发布:淘宝o2o平台 编辑:程序博客网 时间:2024/04/30 20:16
Pascal字符串定义
2个字节的WORD定义为长度N, 后面的Ascii字符串数据长度为N.
/// @file exam_1_3.c/// @brief /**exam_1_3 * 玩结构体, 纯pascal字符串内存区, pascal串一个连一个. 要求遍历每个pascal串,并打印.要求有通用性, 用柔性数组来玩*/#include <windows.h>#include <stdlib.h>#include <stdio.h>/// 用柔性数组来玩pascal字符串的访问typedef struct _tag_flexible_array{ WORD wSizePascalString; ///< 控制计划内越界访问的数据size /// 利用这个1字节的数组和wSizePascalString的控制, 玩计划内的数组越界访问 char cPascalStringData[1];}TAG_FLEXIBLE_ARRAY;BOOL ParsePascalStringBufferAndPrint(unsigned char* pcBuf, size_t nSizeBuf);int main(int argc, char *argv[ ], char *envp[ ]){ BOOL bRc = FALSE; unsigned char data[48] = { 0x0C, 0x00, 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x21, 0x0D, 0x00, 0x77, 0x77, 0x77, 0x2E, 0x70, 0x65, 0x64, 0x69, 0x79, 0x2E, 0x63, 0x6F, 0x6D, 0x04, 0x00, 0x6A, 0x6A, 0x79, 0x79, 0x03, 0x00, 0x43, 0x2B, 0x2B, 0x06, 0x00, 0x63, 0x6F, 0x70, 0x79, 0x54, 0x6F }; bRc = ParsePascalStringBufferAndPrint(data, sizeof(data)); printf("parse data[] is %s\n", bRc ? "TRUE" : "FALSE"); /** run result Hello world! www.pediy.com jjyy C++ copyTo parse data[] is TRUE */ printf("END, press any key to quit\n"); getchar(); return 0;}BOOL ParsePascalStringBufferAndPrint(unsigned char* pcBuf, size_t nSizeBuf){ BOOL bRc = FALSE; int i = 0; TAG_FLEXIBLE_ARRAY* pPascalBlock = NULL; size_t nSizeWasOpted = 0; ///< 已经操作过的pascal数据长度 do { if (NULL == pcBuf) { break; } do { pPascalBlock = (TAG_FLEXIBLE_ARRAY*)(pcBuf + nSizeWasOpted); if ((nSizeWasOpted + sizeof(WORD) + pPascalBlock->wSizePascalString) > nSizeBuf) { bRc = FALSE; break; } for (i = 0; i < pPascalBlock->wSizePascalString; i++) { printf("%c", pPascalBlock->cPascalStringData[i]); } printf("\n"); nSizeWasOpted += sizeof(WORD) + pPascalBlock->wSizePascalString; if (nSizeWasOpted >= nSizeBuf) { bRc = TRUE; break; } } while (1); } while (0); return bRc;}
0 0
- 用柔性数组处理Pascal字符串内存块
- C语言柔性数组分配内存
- 柔性数组
- 柔性数组!
- 柔性数组
- 柔性数组
- 柔性数组
- 柔性数组
- 柔性数组
- 柔性数组
- 柔性数组
- 柔性数组
- 柔性数组
- 柔性数组
- 柔性数组
- 柔性数组
- 柔性数组
- 柔性数组
- nyoj 824 Greedy Mouse【贪心】
- 【数据结构与算法】排序算法之五:归并排序
- Apache MINA框架
- Java循环语句的基础知识
- awk
- 用柔性数组处理Pascal字符串内存块
- Caffe安装教程(Ubuntu15.04+CUDA7.5)
- Java连接mysql数据操作类
- tomcat 多实例部署
- ZZULIOJ 1793 有趣的球
- 使用 PopupWindow 自定义对话框遭遇的悲催事件和解决方法
- 利用遍历思想求解图问题(输出一些简单回路)
- 字符串匹配(一)——朴素算法,Rabin-Karp算法
- 【bzoj2982】combination