打开一个文本文件,怎样将光标移到指定行
比如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文件路径