比如 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]…. |