c++ 跳过某一行 跳过某一列 读取 存储文件

paulinedou 2014-05-07 06:20:21
0 48 16 30 44 58 72 86 100 114 128 142 156 170 240 254 268 282 296 310 324 338 352 366 380 394 408 414 428 442 456 470 478 484 498 512 526 540 554 652 666 680 694 708 722 736 750 764 778 792

1 44 16 30 44 58 72 86 100 114 128 142 156 254 268 282 296 310 324 338 352 366 380 394 414 428 442 456 470 484 498 512 526 540 554 652 666 680 694 708 722 736 750 764 778 792

2 22 30 58 86 114 142 268 296 324 352 380 414 442 470 498 526 554 652 680 708 736 764 792

3 36 30 44 58 72 86 100 114 128 142 268 282 296 310 324 338 352 366 380 428 442 456 470 484 498 512 526 540 666 680 694 708 722 736 750 764 778

4 24 16 30 58 86 114 142 254 268 296 324 352 380 414 442 470 498 526 554 652 680 708 736 764 792

5 6 142 170 240 380 408 478

6 42 30 44 58 72 86 100 114 128 142 156 268 282 296 310 324 338 352 366 380 394 414 428 442 456 470 484 498 512 526 540 554 652 666 680 694 708 722 736 750 764 778 792

7 22 16 30 44 58 72 86 100 114 128 142 156 254 268 282 296 310 324 338 352 366 380 394

有如上这么一些数据,一共(0-7)8行。每一行的第一个数字可以当做一个type, 后续(第二个数字除外)的数字是这个type的取值。 第二个数字表示的是type 可以取值的个数.
请教如何跳过第一行和每一行的第二个数字,读取,并存储在数组里。 谢谢
PS:存储时是否采用二维数组?
...全文
742 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
paulinedou 2014-05-08
  • 打赏
  • 举报
回复
引用 5 楼 fire_agan 的回复:
我站在程序员的角度鄙视一下楼主,这么简单的问题自己应当能解决。
楼主初学,多多谅解啦。问题已经解决
gz_qmc 2014-05-07
  • 打赏
  • 举报
回复
这么久没人回答,楼主好孤独啊 typedef struct tagMYDATA { long dType; long dNum; long *dPtr; sturct tagMYDATA *next; }MYDATA; class CXData { public: CXData(); ~CXData(); bool LoadData(CString *xFilename); private: MYDATA *Head; MYDATA *Tail; long recCount; } CXData::CXData() { Head=NULL; Tail=NULL; recCount=0; } CXData::~CXData() { MYDATA *pCur=Head; while(pCur) { Head=Head->next; if(pVur->dPtr) delete pVur->dPtr; delete pCur; pCur=Head; } Head=NULL; Tail=NULL; recCount=0; } bool CXData::LoadData(CString *xFilename) { FILE *fp=fopen(xFilename,"r"); if(fp==NULL) return false; while(1) { long type=0; long num=0; fscanf(fp,"%d %d",&type,&num); if(feof(fp)) break; if(num<=0) break; MYDATA *p=new MYDATA; p->dType=type; p->dNum=num; p->dPtr=new long[num]; p->next=NULL; memset(p->dPtr,0,num*4); if(Head) { Tail->next=p; Tail=Tail->next; } else { Head=p; Tail=p; } long off=0; while(off<num) { fscanf(fp,"%d",Tail->dPtr+off); if(feof(fp)) return false; off++; } } }
图灵狗 2014-05-07
  • 打赏
  • 举报
回复
++,不处理的跳过它就好。
引用 1 楼 jianwen0529 的回复:
你正常读取,你不存储它们的值就可以了!
幻夢之葉 2014-05-07
  • 打赏
  • 举报
回复
你正常读取,你不存储它们的值就可以了!
arbboter 2014-05-07
  • 打赏
  • 举报
回复
我不是色盲 绿
刘海东121111 2014-05-07
  • 打赏
  • 举报
回复
我站在程序员的角度鄙视一下楼主,这么简单的问题自己应当能解决。
赵4老师 2014-05-07
  • 打赏
  • 举报
回复
仅供参考
//问题:
// 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]
//

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧