用c/c++定位删除一行的问题
用c/c++定位删除一行的问题。
问题背景:
所需数据相当大。a与b文件均为一组文件(a1,a2…,b1,b2…),a文件有最大数据行数(如5000),以行的形式,从a文件中读取数据,将a中不能处理的数据放在b文件中,然后单独对b。
b文件中依旧对数据进行处理,如果已经处理成功,则将该条(该行)数据删除,如果失败则继续保留该数据。
问题情况:
在没有动手编的时候,觉得是个很容易的问题,但是后来发现,c/c++提供的函数,并没有指定删除一行数据的库函数。
网上说了一些方法如先定位在要删除的数据位置,然后将后面的数据覆盖在这个位置。
这样做有3个问题:
一是,seekp()函数可以定位,然后用f.write(s, strlen(s));但是具体要怎样将后面的数据保存并写到这个位置呢? 后面的数据可能有几千行,而且是有‘\n‘的字符的。
二是,如有10条数据,那么这时候要将第二条删除,那么就将第三条往后的7条数据,都覆盖过来,那么之前的最后一条,即第十条数据并没有什么来给它覆盖了?那要怎么去掉原来的第十条?
三是,这样做它的速度问题呢?几千行每处理成功一次,就要将数据整体往前挪,频繁做这个动作效率肯定不高。
那么有没有其他的好方法呢??
另外,还有一条路,就是用数据库代替这个功能,
那么还会有下面的考虑:
一是数据库也存在保存成功和失败的问题;
二是频繁操作数据库会不会更没有效率呢?(与频繁操作文件读取相比)
请大家看一下吧。。不能发很多分不知道为什么。不好意思了
困扰我很久了。
可以用 MFC 里面的 CStdioFile
用 ReadString 将数据一行一行的读进来,如果无法处理,将该行字符串放入一个 CStri
相关问答:
以前在VC里面建一个工程,都只用一个 .c 文件,昨天在一个工程里用了两个 .c文件了,遇到问题了,请大家指点。比如:
File1.c Fil ......
问一下:
#include <stdio.h>
int main()
{
char x, y, z;
int i;
int a[16];
for(i=0; i<=16; i++)
{
a[i] = 0;
......
'\108'作为字符常量对不对?
转义字符'\ddd'表示3位8进制所代表的字符。 但是108不是正确的8进制表示方法,因此应该是错误的。
但是char a='\108'; 为什么编译不出错呢?
\108 没超过 ......
请问用C或C++如何编写求解3D魔方的程序,该从何开始?
谢谢各位,帮忙提点建议吧。
http://www.mofang.net/code/176/182/6581.html
我只能突破60秒!唉。
我刚过40秒
google的android中有个OpenGL ES + ......