想通过编写一个win32应用程序实现从文本里读取数据,数据是按行的,我想实现查找,插入删除行这几个功能
求高手赐教

解决方案 »

  1.   

    fopen fgetc fclose fseek fwrite 等等
    下面是一个遍历文本文件每行的例子int _tmain(int argc, TCHAR *argv[])
    {
    CIsBinaryFile isb;
    string strPath = "F:\\vs2005\\isBinFile\\二进制文件搜索工具\\BinaryFiles.txt";
    FILE *file = NULL;
    string strLine = "";
    while(isb.ReadFileLine(strPath, strLine, &file, "r"))
    {
    int i = 0;
    }
    return 0;
    }
    BOOL CIsBinaryFile::ReadFileLine(string strFilePath, string &strLine, FILE **stream, string strMode)
    {
    char buf[MAX_PATH];
    memset(buf, 0, MAX_PATH);
    int  i, ch;
    errno_t err;
    if(*stream == NULL)
    {
    if( (err = fopen_s(stream, strFilePath.c_str(), strMode.c_str())) != 0 )
    {
    printf("Open or Create %s is Error\n", strFilePath);
    return TRUE;
    }
    }
    ch = fgetc( *stream );
    for( i=0; (i < MAX_PATH ) && ( feof( *stream ) == 0 ); i++ )
    {
    buf[i] = (char)ch;
    if(buf[i] == '\n')
    {
    buf[i + 1] = '\0';
    strLine += buf;
    return TRUE;
    }
    ch = fgetc( *stream );
    }
    fclose(*stream);
    return FALSE;
    }
      

  2.   

    我自己写的可以读取的,就是不知道怎样插入一行数据,还有删除
    #include <iostream>
    #include <fstream>
    using namespace std;void main()
    {
    char m;
    char buffer[256];
    fstream out;
    out.open("2.txt",ios::in);
    cout<<"2.txt"<<" 的内容如下:"<<endl;
    while(!out.eof())
    {
       out.getline(buffer,256,'\n');//getline(char *,int,char) 表示该行字符达到256个或遇到换行就结束
       cout<<buffer<<endl;
    }
    out.close();
    cin.get();//cin.get() 是用来读取回车键的,如果没这一行,输出的结果一闪就消失了
    }
      

  3.   

    文件不大的话一次性将文件内容存入buffer中,然后在buffer中操作,修改完成以后写会文件中。文件比较大的话可以考虑使用文件内存映射
      

  4.   

    插入:
    先用fseek或fsetpos找到需要存储的位置,再输出行删除的话没想到什么好方法,
    笨一点的方法是全部读入,在内存里删除一行再输出
      

  5.   

    没有涉及数据库,只是一个很简单的win32小程序,不要插入好多行,只要能插入,我想先实现功能,然后才能深入