首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

打开一个文本文件,怎样将光标移到指定行,该如何解决

2013-12-19 
打开一个文本文件,怎样将光标移到指定行比如fstream in(test.txt)想把光标移到指定的行来修改数据怎么

打开一个文本文件,怎样将光标移到指定行
比如fstream in("test.txt");
想把光标移到指定的行来修改数据怎么实现,求代码
[解决办法]
所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,关闭文件a,删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。

仅供参考

//问题:
// 1.打开一个文本文件。
// 2.查找这个文本文件的第r行的第c1-c2列?
//
// 如:
// 文件:a
// 11111111
// 22222QQQ
// 33333333
//
// 查找第2行,第6-8列。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXC 16000
char ln[MAXC];
FILE *f;
int r,c1,c2,n,L;
void getc1c2(char *fn) {
    ln[c2]=0;
    printf("Text at row(%d),column(%d..%d) of file %s is [%s]\n",r,c1,c2,fn,ln+c1-1);
}
int main(int argc,char **argv) {
    if (argc<5) {
    HELP:
        printf("Usage:\n    %s filename.ext r c1 c2\nto get text at row(r),column(c1..c2) of filename.ext\n",argv[0]);
        return 1;
    }
    r=atoi(argv[2]);
    c1=atoi(argv[3]);
    c2=atoi(argv[4]);
    if (r<=0 
[解决办法]
 c1<=0 
[解决办法]
 c2<c1 
[解决办法]
 c2>=MAXC) goto HELP;
    f=fopen(argv[1],"r");
    if (NULL==f) {
        printf("Can not open file %s!\n",argv[1]);
        return 2;
    }
    n=0;
    while (1) {
        if (NULL==fgets(ln,MAXC,f)) break;
        L=strlen(ln);
        if ('\n'==ln[L-1]) {
            memset(ln+L-1,0,MAXC-L+1);
            n++;
            if (r==n) {getc1c2(argv[1]);break;}
        } else {
            n++;
            if (r==n) {getc1c2(argv[1]);break;}
            printf("Warning: line %d too long(>%d characters)! Ignore tails.",n,MAXC);
            while (1) {
                if (NULL==fgets(ln,MAXC,f)) goto END;
                L=strlen(ln);
                if ('\n'==ln[L-1]) break;
            }
        }
    }
    END:
    fclose(f);
    return 0;
}
//C:\test\Debug>frcc a 2 6 8
//Text at row(2),column(6..8) of file a is [QQQ]
//

[解决办法]
int write_profile_string( const char *section, const char *key,const char *value, const char *file);//section 项(参数的所在项)//key参数名//value数据内容//file文件路径

[解决办法]
2楼正解,fseek函数可以搞定,定位到指定的位置。然后进行相关操作。
[解决办法]
直接读取换行符不行吗?一个换行符就是一行,又不是采用二进制。简单、简洁。

热点排行