首页
社区
课程
招聘
[旧帖] [求助]C语言如何将一个txt文件内的指定字符串删除 0.00雪花
发表于: 2012-6-21 10:17 2650

[旧帖] [求助]C语言如何将一个txt文件内的指定字符串删除 0.00雪花

2012-6-21 10:17
2650
C语言如何将一个txt文件内的指定字符串删除
  我在VC++环境下编写一个程序~
其中要在一个txt文件中找出一个指定的字符串并删除,格式如下(格式化的):
about,do,esteblish,baby,
删除一个单词do后,新的就是about,esteblish,baby,(还要保存到原文件中)
我看了网上说的一些先都读入内存,再找出删除的字符串,跳过,然后将余下的都写入文件,可是我事先不知道文件内的字符个数,怎么申请数组?
请说的尽可能详细些....

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
2
以lpvoid读取整个文件或者是一定字节数,这取决于文件大小和你的决定。然后使用类型转换成pbyte,按逗号标记分割成字符串提交给过滤函数判定,若不需要删除,则写入新文件,若需要则跳过该字符串。如此循环至文件结束。
2012-6-21 10:33
0
雪    币: 502
活跃值: (3460)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
//获取文件大小后,申请缓冲区后读取文件内容到缓冲区,然后使用ReplaceSubStr替换缓冲区中的指定字符,最后把缓冲区的内容写入文件即可

        
/*获取文件大小*/
FILE *pf = fopen(szFilter, "rb");
fseek(pf, 0, SEEK_END);
int iFileSize = ftell(pf);
char *pBuffer = new char[iFileSize+1];
memset(pBuffer, 0, iFileSize+1);
fseek(pf, 0, SEEK_SET);

/*替换指定字符串*/
BOOL ReplaceSubStr(char *pSource, const char *pOldStr, const char *pNewStr)
{
    if (pSource==NULL
        ||pOldStr==NULL
        ||pNewStr==NULL)
    {
        return FALSE;
    }
    std::string newStr = pNewStr;
    std::string oldStr = pOldStr;
    std::size_t newStrLen = newStr.size();
    std::size_t oldStrLen = oldStr.size();
    std::size_t pos = 0;   
    std::string tempStr = pSource;   
    std::string::size_type newStrnewStrLen = newStr.length();   
    std::string::size_type oldStroldStrLen = oldStr.length();   
    while(true)   
    {   
        pos = tempStr.find(oldStr, pos);   
        if (pos == std::string::npos) break;   
        tempStr.replace(pos, oldStrLen, newStr);
        pos += newStrLen;
    }
    strcpy(pSource, tempStr.c_str());
    return TRUE;      
}
2012-6-21 10:37
0
雪    币: 502
活跃值: (3460)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
char buf[1024] = "about,do,esteblish,baby,";
ReplaceSubStr(buf,  "do,",  "");//执行后buf的内容是"about,esteblish,baby,"
2012-6-21 10:43
0
游客
登录 | 注册 方可回帖
返回
//