从txt文档中读取数据保存到一个多维数组

明源123 2013-12-19 02:35:46
我想要从一个已经生成的txt文档中读取数据然后将这些数据保存到一个多维数组中,但是我并不知道这个多维数组会有多少行和列,找到了一个程序,但是只是实现了读取数据的功能,并没有保存到数组里面,到底应该怎么做啊?求赐教。
...全文
294 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2013-12-20
  • 打赏
  • 举报
回复
vector<vector<>>
shiguojie19892 2013-12-20
  • 打赏
  • 举报
回复
能用一位数组实现吗?多维到最后也可以分解为一维呀
int main()
{
	int i = 0;
	char buf[10240];

	FILE* fp = NULL;
	fp = fopen("d:/TAX.txt","r");
	assert(NULL != fp);
	
	while((char)EOF != buf[i])
	{
		buf[i] = fgetc(fp);
		printf("%c", buf[i]);
	}
	buf[i] = '\0';

	printf("\n");

	return 0;
}
奔跑的大象 2013-12-19
  • 打赏
  • 举报
回复
引用 11 楼 ajklhmnlkiu 的回复:
[quote=引用 10 楼 zhaobangyu 的回复:] 容器实现,很简单的说。
你倒是说啊?捉急~~[/quote] 把你文件TXT里的数据格式发出来,
明源123 2013-12-19
  • 打赏
  • 举报
回复
引用 10 楼 zhaobangyu 的回复:
容器实现,很简单的说。
你倒是说啊?捉急~~
奔跑的大象 2013-12-19
  • 打赏
  • 举报
回复
容器实现,很简单的说。
vipcxj 2013-12-19
  • 打赏
  • 举报
回复
其实我觉得LZ直接弄个一维数组,记下行数或者列数,自然就能算出一维数组里面的位置对应多维数组的哪个。我记得图片虽然是两维,但储存一般还是用一维数组,简单省事
明源123 2013-12-19
  • 打赏
  • 举报
回复
引用 6 楼 ajklhmnlkiu 的回复:
[quote=引用 4 楼 zhao4zhong1 的回复:]
仅供参考:
#include <stdio.h>
#define MAXL 10000
int d[MAXL][3];
FILE *f;
int i,n;
char ln[200];
int main() {
f=fopen("in.txt","r");
if (NULL==f) {
printf("Can not open file in.txt!\n");
return 1;
}
i=0;
while (1) {
if (NULL==fgets(ln,200,f)) break;
if (3==sscanf(ln,"%d%d%d",&d[i][0],&d[i][1],&d[i][2])) {
i++;
if (i>=MAXL) {
printf("Too many lines (>%d), Ignored!\n",MAXL);
break;
}
} else {
printf("Line %d format error:%s",i+1,ln);
}
}
fclose(f);
n=i;
for (i=0;i<n;i++) {
printf("%d:%d %d %d\n",i,d[i][0],d[i][1],d[i][2]);
}
return 0;
}
谢谢老师,成功运行![/quote]
又出现了这个问题怎么回事,一换图片就出这个问题了,老师?
明源123 2013-12-19
  • 打赏
  • 举报
回复
引用 3 楼 mujiok2003 的回复:
[quote=引用 1 楼 ajklhmnlkiu 的回复:] 知道列数是3列,但是行数是不知道的,只能从txt中读取。

#include <vector>
#include <fstream>
int main()
{
  struct Row
  {
    int a,b,c;
  };
  std::vector<Row> rows;
  std::ifstream ifs("input.dat");
  Row r;
  while(ifs >> r.a >> r.b >> r.c)
  {
    rows.push_back(r);
  }
  //.....
  return 0;
}
随手写的,没有测试。[/quote]已解决不过还是谢谢你!
明源123 2013-12-19
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
仅供参考:
#include <stdio.h>
#define MAXL 10000
int d[MAXL][3];
FILE *f;
int i,n;
char ln[200];
int main() {
    f=fopen("in.txt","r");
    if (NULL==f) {
        printf("Can not open file in.txt!\n");
        return 1;
    }
    i=0;
    while (1) {
        if (NULL==fgets(ln,200,f)) break;
        if (3==sscanf(ln,"%d%d%d",&d[i][0],&d[i][1],&d[i][2])) {
            i++;
            if (i>=MAXL) {
                printf("Too many lines (>%d), Ignored!\n",MAXL);
                break;
            }
        } else {
            printf("Line %d format error:%s",i+1,ln);
        }
    }
    fclose(f);
    n=i;
    for (i=0;i<n;i++) {
        printf("%d:%d %d %d\n",i,d[i][0],d[i][1],d[i][2]);
    }
    return 0;
}
谢谢老师,成功运行!
舉杯邀明月 2013-12-19
  • 打赏
  • 举报
回复
引用 1 楼 ajklhmnlkiu 的回复:
知道列数是3列,但是行数是不知道的,只能从txt中读取。
你这种情况,可以用指针和动态内存申请来处理。 特别是你说的“列数”是已知的,就很好管理了。
赵4老师 2013-12-19
  • 打赏
  • 举报
回复
仅供参考:
#include <stdio.h>
#define MAXL 10000
int d[MAXL][3];
FILE *f;
int i,n;
char ln[200];
int main() {
    f=fopen("in.txt","r");
    if (NULL==f) {
        printf("Can not open file in.txt!\n");
        return 1;
    }
    i=0;
    while (1) {
        if (NULL==fgets(ln,200,f)) break;
        if (3==sscanf(ln,"%d%d%d",&d[i][0],&d[i][1],&d[i][2])) {
            i++;
            if (i>=MAXL) {
                printf("Too many lines (>%d), Ignored!\n",MAXL);
                break;
            }
        } else {
            printf("Line %d format error:%s",i+1,ln);
        }
    }
    fclose(f);
    n=i;
    for (i=0;i<n;i++) {
        printf("%d:%d %d %d\n",i,d[i][0],d[i][1],d[i][2]);
    }
    return 0;
}
mujiok2003 2013-12-19
  • 打赏
  • 举报
回复
引用 1 楼 ajklhmnlkiu 的回复:
知道列数是3列,但是行数是不知道的,只能从txt中读取。

#include <vector>
#include <fstream>
int main()
{
  struct Row
  {
    int a,b,c;
  };
  std::vector<Row> rows;
  std::ifstream ifs("input.dat");
  Row r;
  while(ifs >> r.a >> r.b >> r.c)
  {
    rows.push_back(r);
  }
  //.....
  return 0;
}
随手写的,没有测试。
signforlin 2013-12-19
  • 打赏
  • 举报
回复
多维数组。。。很遥远的名词,一般都用容器嵌套实现吧。
明源123 2013-12-19
  • 打赏
  • 举报
回复
知道列数是3列,但是行数是不知道的,只能从txt中读取。

64,648

社区成员

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

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