user-0 提问: 接口文件中读取保存指定结构文件中

回复:
user: user-0
content: DWORD GetPrivateProfileString 自己实现了 很麻烦，不过还是C强大#89 谢谢大家！

user: user-0
content: 引用 1 楼 zhao4zhong1 的回复:很明显，两者的字节数不同。 正是因为这样，C#中的数据类型要求C来实现这种结构的文件。接口的.ini文件中取结构体变量

user: user-1
content: 很明显，两者的字节数不同。

user: user-0
content: 引用 9 楼 zhao4zhong1 的回复:建议使用XML格式保存数据。 谢谢，这倒是个方法，可以试试。不过我觉得直接读取接口文件应该能实现，因为要实现实时文件的生成。

user: user-1
content: 建议使用XML格式保存数据。

user: user-1
content: 建议楼主先补课：  电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址； 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……   推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。  不要把 fopen("...","...");fscanf,fprintf,fgets,fgetc,fclose //读时把\r\n替换成\n，写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待 和 fopen("...","...b");fseek,fread,fwrite,fgetc,fclose  //不作以上替换，遇到\x1a仍继续读;读写的内容当字节看待 弄混了

user: user-0
content: 引用 3 楼 zhao4zhong1 的回复:(14 00 OA 00 07 00 1A 00 00 00 01 00 2D 00 53 00 4E 00 6F 00 01 00 00 00 00 00 01 00 02 00 03 00) //←32个字节 //文件记录结构： typedef struct{     Uint16 oDate;                     // 2     Uint16 oTime;                     // 2     Uint16 sTime;                     // 2     Uint16 tfFlag;                    // 2     Uint16 ErrorCode[3];              // 6  2*3     Uint16 MoneyFlag[4];              // 8  2*4     Uint16 Ver;                       // 2     Uint16 Valuta;                    // 2     Uint16 CharNUM;                   // 2     Uint16 SNo[12];                   //24  2*12     Uint16 MachineSNo[24];            //48  2*24     Uint16 Reserve1       //保留字1   // 2 }                                     //合计102个字节 //请问：32个字节怎么和102个字节的信息建立对应关系？   是文件头。请教老师 DWORD GetPrivateProfileString 这个API的函数读出.ini文件的数据赋值给结构体变量，以生成上述文件结构不知道这样可以实现吗？

user: user-0
content: DWORD GetPrivateProfileString 这个API的函数读出.ini文件的数据赋值给结构体变量，以生成上述文件结构不知道这样可以实现吗？

user: user-0
content: 引用 4 楼 user-2 的回复:[quote=引用 1 楼 zhao4zhong1 的回复:] 很明显，两者的字节数不同。  我猜楼主说的 (14 00 OA 00 07 00 1A 00 00 00 01 00 2D 00 53 00 4E 00 6F 00 01 00 00 00 00 00 01 00 02 00 03 00) 是文件头 文件头后面跟着的才是结构体  但是文件头的定义没给[/quote] 抱歉，叙述表达的问题。确实是给的文件头 typedef struct { Uint16  HeadStart[4];     //20,10,7,26 Uint16  HeadString[6];  // 0,1,2D Uint32  Counter;          //1 Uint16  HeadEnd[4];   //1,2,3,4 }

user: user-2
content: 引用 1 楼 zhao4zhong1 的回复:很明显，两者的字节数不同。  我猜楼主说的 (14 00 OA 00 07 00 1A 00 00 00 01 00 2D 00 53 00 4E 00 6F 00 01 00 00 00 00 00 01 00 02 00 03 00) 是文件头 文件头后面跟着的才是结构体  但是文件头的定义没给

user: user-1
content: (14 00 OA 00 07 00 1A 00 00 00 01 00 2D 00 53 00 4E 00 6F 00 01 00 00 00 00 00 01 00 02 00 03 00) //←32个字节 //文件记录结构： typedef struct{     Uint16 oDate;                     // 2     Uint16 oTime;                     // 2     Uint16 sTime;                     // 2     Uint16 tfFlag;                    // 2     Uint16 ErrorCode[3];              // 6  2*3     Uint16 MoneyFlag[4];              // 8  2*4     Uint16 Ver;                       // 2     Uint16 Valuta;                    // 2     Uint16 CharNUM;                   // 2     Uint16 SNo[12];                   //24  2*12     Uint16 MachineSNo[24];            //48  2*24     Uint16 Reserve1       //保留字1   // 2 }                                     //合计102个字节 //请问：32个字节怎么和102个字节的信息建立对应关系？