新手请教如何读取指定行字符串
比如 char *str变量 内容是
abc=123
def=456
aaa=444
....
这样很多数据,能不能不使用循环而指定读取哞一行呢?
比如这次我读取了前100行的数据,下次我想从101行开始读取怎么做呢,不想使用循环一行行的读取判断当前是不是101行 ,这样效率太低了。
请教大婶解答
------解决思路----------------------
没理解啥意思,如果是二维数组变量的话,不是直接写行数就可以跳转吗?
------解决思路----------------------
除非每行的长度一样长
------解决思路----------------------
引用:Quote: 引用:除非每行的长度一样长
如果一样长怎么读取呢,另外在请教一下 一个字符串能不能从指定字节开始读取呢,比如先读取前面1000字节,然后下次再从1001字节开始读取。那就从str[1001]开始
------解决思路----------------------
仅供参考:
#include
#include
#include
FILE *f,*fl;
long lastoffset=0,linenum=0;
char ln[256];
int n,k;
int main() {
fl=fopen("lastoffset","r");
if (fl) {
fscanf(fl,"%d %d",&lastoffset,&linenum);
fclose(fl);
}
f=fopen("data.txt","rb");
fseek(f,lastoffset,SEEK_SET);
while (1) {
if (NULL==fgets(ln,255,f)) {
lastoffset=0;
linenum=0;
break;
}
if ('\n'==ln[strlen(ln)-1]) ln[strlen(ln)-1]=0;
if ('\r'==ln[strlen(ln)-1]) ln[strlen(ln)-1]=0;
lastoffset=ftell(f);
linenum++;
printf("%8d: %s\n",linenum,ln);
k=getch();
if (k==27) break;//按Esc键提前退出
}
fclose(f);
fl=fopen("lastoffset","w");
fprintf(fl,"%d %d",lastoffset,linenum);
fclose(fl);
return 0;
}
------解决思路----------------------
重新声明一个char*的数组,先写个循环,把每行分开放到里面,之后要第几行都只接调用
比如你声明的数组名叫s, 需要第一行,就s[0],第二行s[1]....