将文本文件以二进制按行读出

dir541541 2008-10-31 05:29:22
一个文本文件
如何按二进制一行一行的读出

要求是将文本中的内容按行读出,然后在指定的进程内存块中搜索
我原来是用CStdioFile类中的ReadString来做的,其中有中文还要转成char类型
再用ReadProcessMemory将内存中的数据以char型读出
两都来对比

这种的话两次转换可能会浪费些时间,如果数据多的话可能影响效率
现在想直接把文本文件以二进制读出,直接和内存中的数据对比.

望指点!
...全文
196 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
dir541541 2008-11-02
  • 打赏
  • 举报
回复
下面是测试的内容

// 测试以二进制按行读出文本
FILE *fp;
fp = fopen("testbin.txt", "rb");
if (fp == NULL)
{
printf("文件打开失败!\n");
}
char chToRead[20];
while ( fgets( chToRead, 20, fp) != NULL)
{
printf("%s", chToRead);
}
fclose(fp);

文本中的内容为:
一个测试
换行再测试
文本文档

chToRead在内存中的内容为:
d2 bb b8 f6 b2 e2 ca d4 0d 0a 00 cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc
bb bb d0 d0 d4 d9 b2 e2 ca d4 0d 0a 00 cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc
ce c4 b1 be ce c4 b5 b5 00 d4 0d 0a 00 cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc

这种情况的话还得做两件事
1. 把含有 0d 0a 的字节去掉
2. 得到字符实际占用的字节数,例如
d2 bb b8 f6 b2 e2 ca d4 0d 0a 00 cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc // 一个测试
转为d2 bb b8 f6 b2 e2 ca d4 00 占用字节为9

这种的话有什么方便的方法实现吗,有现成函数可以调用吗
dir541541 2008-11-02
  • 打赏
  • 举报
回复
因为要和另一进程的内存比较,所以需要知道一行文本所占的字节数
但fgets我得设置一个比较大的长度来读一行
看来现在需要写个函数来得到实际的字节大小了
lishu2002 2008-11-02
  • 打赏
  • 举报
回复
fgets指定长度是个最大长度,如果你的数据小于你给的长度就只有实际长度,如果大于你指定的长度才会按照你的长度赋值
lishu2002 2008-11-02
  • 打赏
  • 举报
回复
既然是文本文件就可以用非二进制方式打开,然后按照文本方式打开使用按行读取函数fgets就可以了
dir541541 2008-11-02
  • 打赏
  • 举报
回复
没人进来?

自己顶
dir541541 2008-11-01
  • 打赏
  • 举报
回复
要读的是另外一个进程的内存
这种能不能用memecmp,如果用memcmp的话要知道字符串所占的字节数

用fgets读出时需要指定要读的长度,但我每行的长度是不确定的
我只能设一个大的数组来存放,在遇到回车换行的时候中止
怎么确定读了多少字节?(如果用sizeof的话得到的只是数组长度)
kingcrab 2008-11-01
  • 打赏
  • 举报
回复
楼主要求的是“二进制按行读出”。
路过未来哈哈 2008-11-01
  • 打赏
  • 举报
回复
fopen() and getc()搞定
jingzhongrong 2008-10-31
  • 打赏
  • 举报
回复
你都读到内存中直接memcmp不就好了?
HEROPJP 2008-10-31
  • 打赏
  • 举报
回复
fopen
()
{

}
matrixnull 2008-10-31
  • 打赏
  • 举报
回复
CFile::typeBinary
sms88 2008-10-31
  • 打赏
  • 举报
回复
#include <fstream>
using namespace std;
fstream file ;
//...
file.getline()
具体的看MSDN
用户 昵称 2008-10-31
  • 打赏
  • 举报
回复
用以前的fopen 与 fgets
帅得不敢出门 2008-10-31
  • 打赏
  • 举报
回复
fread()

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧