|
比如 char *str变量 内容是 这样很多数据,能不能不使用循环而指定读取哞一行呢? |
|
|
10分 |
没理解啥意思,如果是二维数组变量的话,不是直接写行数就可以跳转吗?
|
|
20分 |
除非每行的长度一样长
|
|
能说一下当时你怎么做的吗 |
|
|
不是二维数组是char *str |
|
|
如果一样长怎么读取呢,另外在请教一下 一个字符串能不能从指定字节开始读取呢,比如先读取前面1000字节,然后下次再从1001字节开始读取。 |
|
|
20分 |
那就从str[1001]开始 |
|
30分 |
仅供参考:
#include <stdio.h>
#include <string.h>
#include <conio.h>
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;
}
|
|
20分 |
重新声明一个char*的数组,先写个循环,把每行分开放到里面,之后要第几行都只接调用
比如你声明的数组名叫s, 需要第一行,就s[0],第二行s[1]…. |