`
javaitface
  • 浏览: 17116 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
最近访客 更多访客>>
社区版块
存档分类
最新评论

读入2进制文件 电子地图管理系统

    博客分类:
  • c
c 
阅读更多
求指点:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct road    //定义路的结构体
{
int struct_size;   //结构体长度
int LinkID;
int NameSize;
int ClassID;
int Xlu;
int flag;
char name[20];
road()
{
struct_size=0;
LinkID=0;
NameSize=0;
ClassID=0;
Xlu=0;
flag=0;
}
}road[500];

int main()
{

char *pchBuf = NULL;
char *pchBuf1 = NULL;
int  nLen = 0,roadnum,i,sum=0;    //roadnum记录一共有多少条路,i作为一个计数器,sum与nLen比较,大于等于了就停止。
FILE *pF  = fopen("D:\\DATA\\GTBL.dat", "r");   //打开文件

fseek(pF, 0, SEEK_END);   //文件指针移到文件尾
nLen = ftell(pF);    //得到当前指针位置, 即是文件的长度
rewind(pF);    //文件指针恢复到文件头位置

pchBuf = (char*) malloc(sizeof(char)*nLen+1);    //动态申请空间, 为保存字符串结尾标志\0, 多申请一个字符的空间
if(!pchBuf)
{
perror("内存不够!\n");
exit(0);
}

nLen = fread(pchBuf, sizeof(char), nLen, pF);//读取文件内容 ,读取的长度和源文件长度有可能有出入,这里自动调整 nLen
pchBuf[nLen] = '\0'; //添加字符串结尾标志
pchBuf1=pchBuf;

for (roadnum=0;sum<nLen;roadnum++)
{
int a[8]={0},num=0;

for (i=0;i<2;i++)
{
road[roadnum].struct_size+=pchBuf[i];
}
    pchBuf+=2;

road[roadnum].LinkID+=pchBuf[2]*16*16+pchBuf[3];

pchBuf+=4;
for (i=0;i<2;i++)
{
road[roadnum].NameSize+=pchBuf[i];
}
pchBuf+=2;
        /*
    i=0;
pchBuf[i]=pchBuf[i+3]+pchBuf[i+2]*16*16;

do
{
a[num]=pchBuf[i+3]%2;
pchBuf[i+3]=pchBuf[i+3]/2;
num++;
} while (((unsigned int)pchBuf[i+3])>=2);

for (i=0;i<4;i++)
{
road[roadnum].ClassID+=a[i];
}
for (i=4;i<7;i++)
{
road[roadnum].Xlu+=a[i];
}
road[roadnum].flag=a[7];
*/
pchBuf+=4;
memcpy(road[roadnum].name,pchBuf,road[roadnum].struct_size-12);
road[roadnum].name[road[roadnum].struct_size-12]='\0';
        pchBuf+=road[roadnum].struct_size-12;
sum+=road[roadnum].struct_size;
}

for (i=0;i<roadnum;i++)
{
printf("%d  %d  %d  %d  %s\n",road[i].struct_size,road[i].LinkID,road[i].NameSize,road[i].ClassID,road[i].name);
}


    fclose(pF);  //关闭文件
free(pchBuf1); //释放空间
pchBuf = NULL;
pchBuf1 = NULL;

return 0;
}
分享到:
评论

相关推荐

    读入十六进制txt文件转十进制txt输出

    要实现“读入十六进制txt文件转十进制txt输出”,我们可以使用各种编程语言,例如Python、Java或C++等。这里以Python为例,介绍一个基本的处理流程: 1. **读取十六进制文件**:Python的内置函数`open()`可以用来...

    在二进制文件中搜索字符串、十六进制甚至另一个二进制文件_Python

    可以将待查找的二进制文件读入一个字节串,然后在主文件中进行匹配。这里使用`bytes.find()`方法: ```python with open('binary_file', 'rb') as main_file, open('pattern_file', 'rb') as pattern_file: main_...

    c++操作二进制文件详解

    2. **C++中操作二进制文件的API** - `ifstream` 和 `ofstream` 类:用于读写文本文件,但在处理二进制文件时,需要指定以二进制模式打开。 - **二进制模式的指定**:通过传递`ios_base::binary`标志给`open()`函数...

    二进制文件的读写,当前时间写入到dat文件中,可以读入读出.C#源代码

    2. **二进制文件的读取**: 要从二进制文件中读取数据,我们需要使用`BinaryReader`。同样地,先创建`FileStream`,然后通过`FileStream`实例化`BinaryReader`。读取数据时,使用对应的`Read`方法。比如读取之前...

    将源文件读入matlab后二进制输出到文本文件

    在MATLAB中,将源文件读入并以二进制格式输出到文本文件是一个常见的数据处理操作,尤其在处理大量数据或需要与不同编程语言交换数据时。这个过程包括两个主要步骤:首先读取源文件,然后以二进制格式写入到新的文本...

    二进制文件加密

    可以使用密钥管理系统(KMS)来安全地存储和分发密钥,或者采用硬件安全模块(HSM)来物理保护密钥。 总之,二进制文件加密是保护数据安全的重要手段。它通过将二进制文件转换为密文,防止未经授权的访问,确保了...

    VB6 读取二进制文件并显示.txt

    例如,这里将文件中的所有字节读入到数组 `FileByte()` 中: ```vb ReDim FileByte(FileLen) As Byte Get #BinFileNo, , FileByte() ``` #### 2.3 处理字节数据 在读取了二进制文件后,通常需要对读取的数据进行...

    【C语言】二进制文件操作问题

    ### 二进制文件操作与图片合并方法 #### 一、二进制文件的基本概念 在计算机科学领域,二进制文件是指存储在磁盘上的一系列未经解释的二进制数据。这些数据通常不能直接被人阅读理解,而是由特定的应用程序进行...

    asp.net 二进制文件的读写

    2. 文件读写完成后记得关闭文件流,避免资源泄漏,可以使用using语句自动管理。 3. 对于上传的二进制文件,应检查文件大小和类型,防止恶意文件注入。 4. 考虑到并发访问,确保文件操作是线程安全的。 5. 如果文件很...

    读取文件内容并以二进制显示

    描述中的 "以二进制显示" 指的是将文件的内容以01二进制码的形式展示出来,这对于开发者来说是非常有用的,因为它能揭示文件的原始结构,尤其是在处理二进制文件(如位图、可执行程序或系统文件)时。 标签 "控件" ...

    C++,java读写二进制文件方法介绍.docx

    * 读文件时,需要使用 `read` 函数,参数为 `(const char * ch, int size)`,需要将文件中的内容读入到变量中,需要类型转换。 * 文件指针的移动可以使用 `seekg` 和 `seekp` 函数,参数为 `(off_type offset, ios_...

    java读取二进制文件

    ### Java读取二进制文件知识点详解 #### 一、二进制文件基本概念 在计算机科学中,二进制文件是由一系列字节组成的文件,这些字节可以表示任何类型的数据,包括文本、图像、音频等。二进制文件与文本文件的主要区别...

    读二进制文件示例

    在编程领域,处理二进制文件是一项常见的任务,特别是在系统编程、数据存储和文件格式处理等方面。本示例聚焦于如何使用Visual C++ 6.0(简称VC6.0)这一经典IDE来读取二进制文件。下面将详细阐述相关知识点。 一、...

    【更新代码】将源文件读入matlab后二进制输出到文本文件

    这个【更新代码】涉及的正是如何将源文件读入MATLAB,然后以二进制格式输出到文本文件。以下是对这个过程的详细解释: 首先,我们需要理解二进制文件和文本文件的区别。二进制文件是以机器可读的格式存储数据,每个...

    matlab实现从txt中读取16进制数据并转换为二进制01矩阵,处理后再转换为16进制输出到txt

    我在互联网上找了很久,发现没有人发布关于matlab从txt文档中读取16进制数转换为矩阵,再转换为2进制数矩阵,再按位拆分为01矩阵,处理完成后再转换为16进制输出的方法,这个程序也可以改写成读入十进制,输出十进制...

    读取写入二进制数据

    我们将以“读取二进制文件,解析字符串,然后写入二进制数据”为主题,以Python语言为例,详细阐述这一过程。 首先,让我们理解二进制文件。与文本文件不同,二进制文件不包含可直接阅读的字符,而是存储原始数据,...

    Binary二进制文件读写方法

    2. 二进制文件的顺序很重要,读写时需保持一致,否则会导致数据解析错误。 3. 数据类型应匹配,例如,写入一个整数后,必须用`ReadInt32`来读取。 4. 文件操作完毕后,确保正确关闭所有流,避免资源泄漏。 综上所述...

    C/C++ 读取16进制文件的方法

    2.如何读取16进制文件 最近编程用这一问题,网上查了一下,感觉还是自己写吧。 16进制数据一般是:text=0x340xb5…,就是0x开头,之后是两个数字十六进制数。 如果直接使用sscanf(text,”0x”,&num),会把连续的数字...

    易语言16进制读取器

    易语言16进制读取器源码,16进制读取器,填充重复文本,字节集到十六进制文本,画板写出,Read线程,动画初始化,SubClass1_WndMessage,API_SetWindowLong,API_CallWindowProc,API_CopyMemory,API_CopyMemory1,API_取得窗口...

Global site tag (gtag.js) - Google Analytics