VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 4248|回复: 7

读取未知行数的txt数据到二维数组中

[复制链接]
18_avatar_middle
最佳答案
0 
在线会员 发表于 2019-8-5 21:28:48 | 显示全部楼层 |阅读模式
3驿站币
我想问怎样在不知道txt里面存储的矩阵的行数的情况下将矩阵读入数组,代码上是读取了一个15行15列的txt矩阵,当不知道行数的时候怎样读取呢?原打算先获取txt文件的行数rows,然后定义 int data[rows][15]={0};可是这样不行,rows必须是个定量值,请问该怎样做啊,新手求教读取未知行数的txt数据到二维数组中


  1.         ifstream infile;
  2.         infile.open("D:/matlab/aa.txt");
  3.         int data[15][15] = { 0 };
  4.         for (int i = 0; i < 15; i++)
  5.         {
  6.                 for (int j = 0; j < 15; j++)
  7.                 {
  8.                         infile >> data[i][j];
  9.                 }
  10.         }
  11.         infile.close();
复制代码


最佳答案

查看完整内容

首先,文档中的每个数字之间肯定需要空格分隔开;再者,按照一般的输入方式,到一行末尾肯定回车换行,一行不管有多少空格(两个数字之间),可以在转换时判断是否为空格,然后在进行int转换,简单修改一下程序就可以了 截图说明: 第二行的45和4之间有两个空格,第二行第二个数为二位数,第三行第三个数为三位数,以此可以验证多位数都可行,代码未优化。 截图:在下 代码如下: 多谢提出疑问,刚开始想的 ...




上一篇:求教C++水仙花数
下一篇:请问,用icmp协议ping多台主机判断联通,是用线程池还是用普通线程!
59_avatar_middle
最佳答案
0 
在线会员 发表于 2019-8-5 21:28:49 | 显示全部楼层
本帖最后由 aladdin_h 于 2019-8-8 18:36 编辑
ysu 发表于 2019-8-8 15:21
这样 取字节变成int  ,这要是0到9一位的数字占一个字节好像可以,但要是两位数呢,也不确定文档数据都是 ...


首先,文档中的每个数字之间肯定需要空格分隔开;再者,按照一般的输入方式,到一行末尾肯定回车换行,一行不管有多少空格(两个数字之间),可以在转换时判断是否为空格,然后在进行int转换,简单修改一下程序就可以了

截图说明:

        第二行的45和4之间有两个空格,第二行第二个数为二位数,第三行第三个数为三位数,以此可以验证多位数都可行,代码未优化。

截图:在下

读取未知行数的txt数据到二维数组中

代码如下:

多谢提出疑问,刚开始想的太简单了,这次使用了 atoi 函数,头文件为 #include <stdlib.h>,修改完如下。

  1. #include "stdlib.h"
  2. #include "stdio.h"

  3. int main(int argc, char *argv[])
  4. {
  5.     FILE *in= fopen("G:/text/demo.txt", "r");
  6.     char buf[100][1024];
  7.         int figure[100][1024]={ 0 };
  8.         int i=0,j=0,m=0,n=0;
  9.        
  10.     while ( fgets(buf[i], sizeof(buf[i]), in) != NULL)
  11.     {
  12.         printf("%s", buf[i]);
  13.                 i++;
  14.     }
  15.         printf("\n\n");
  16.     fclose(in);
  17.        
  18.         //想读取哪一个数字,这里读取第三行第三个数
  19.         //注意字节是一个一个的,所以这里数组[][]要注意。
  20.        
  21.         for (;m<i;m++)
  22.         {
  23.                 n=0;
  24.                 j=0;
  25.                 for (;buf[m][n]!='\0';)
  26.                 {
  27.                         if (buf[m][n] ==' ')
  28.                         {
  29.                                 n++;
  30.                                 continue;
  31.                         }
  32.                         if ( n!=0 && buf[m][n-1] != ' ')
  33.                         {
  34.                                 n++;
  35.                                 continue;
  36.                         }
  37.                         figure[m][j]=atoi( &buf[m][n] );
  38.                         j++;
  39.                         n++;
  40.                 }
  41.                
  42.         }
  43.        
  44.         printf("这个数组有%d行,%d列",i,j);
  45.         printf("\n");
  46.         for(m=0;m<i;m++)
  47.         {
  48.                 for(n=0;n<j;n++)
  49.                         printf("%d ",figure[m][n]);
  50.                 printf("\n");
  51.         }
  52.         printf("\n");
  53.        
  54.     return 0;
  55. }
复制代码

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small thzzl + 2 + 2 赞一个!

查看全部评分

59_avatar_middle
最佳答案
0 
在线会员 发表于 2019-8-6 10:11:34 | 显示全部楼层
这是C语言写的提取文件中的矩阵,并对其用数组命名,然后提取出来,注意文件字节的问题。

读取未知行数的txt数据到二维数组中

代码如下

  1. #include "stdlib.h"
  2. #include "stdio.h"

  3. int main(int argc, char *argv[])
  4. {
  5.     FILE *in= fopen("G:/text/demo.txt", "r");
  6.     char buf[100][1024];
  7.         int i;
  8.        
  9.         i=0;
  10.     while ( fgets(buf[i], sizeof(buf[i]), in) != NULL)
  11.     {
  12.         printf("%s", buf[i]);
  13.                 i++;
  14.     }
  15.         printf("\n\n");
  16.     fclose(in);
  17.        
  18.         //想读取哪一个数字,这里读取第三行第三个数
  19.         //注意字节是一个一个的,所以这里数组[][]要注意。
  20.         printf("%c",buf[2][4]);
  21.         printf("\n");
  22.        
  23.     return 0;
  24. }
复制代码


        希望能帮到你。读取未知行数的txt数据到二维数组中

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small thzzl + 2 + 2 学习了

查看全部评分

18_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-8-6 11:58:35 | 显示全部楼层
aladdin_h 发表于 2019-8-6 10:11
这是C语言写的提取文件中的矩阵,并对其用数组命名,然后提取出来,注意文件字节的问题。


我想把txt文件里的数保存到int类型二维数组中怎么办啊,就像我上面定义的那个int data[15][15]  这样,但是行数不知道,因为需要用这个数组做计算
59_avatar_middle
最佳答案
0 
在线会员 发表于 2019-8-6 18:12:25 | 显示全部楼层
ysu 发表于 2019-8-6 11:58
我想把txt文件里的数保存到int类型二维数组中怎么办啊,就像我上面定义的那个int data[15][15]  这样, ...

基础不扎实,你matlab怎么样读取未知行数的txt数据到二维数组中

截图:

读取未知行数的txt数据到二维数组中

代码如下:

  1. #include "stdlib.h"
  2. #include "stdio.h"

  3. int main(int argc, char *argv[])
  4. {
  5.     FILE *in= fopen("G:/text/demo.txt", "r");
  6.     char buf[100][1024];
  7.         int figure[100][1024]={ 0 };
  8.         int i=0,j=0,m=0,n=0;
  9.        
  10.     while ( fgets(buf[i], sizeof(buf[i]), in) != NULL)
  11.     {
  12.         printf("%s", buf[i]);
  13.                 i++;
  14.     }
  15.         printf("\n\n");
  16.     fclose(in);
  17.        
  18.         for (;m<i;m++)
  19.         {
  20.                 n=0;
  21.                 j=0;
  22.                 for (;buf[m][n]!='\0';)
  23.                 {
  24.                         figure[m][j]=buf[m][n]-48;        //ASCII与字符的对应关系,详情仔细看对应的表
  25.                         j++;
  26.                         n=n+2;
  27.                 }
  28.                
  29.         }
  30.        
  31.         printf("这个数组有%d行,%d列",i,j);
  32.         printf("\n");
  33.         for(m=0;m<i;m++)
  34.         {
  35.                 for(n=0;n<j;n++)
  36.                         printf("%d ",figure[m][n]);
  37.                 printf("\n");
  38.         }
  39.         printf("\n");
  40.        
  41.     return 0;
  42. }
复制代码


评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small thzzl + 2 + 2 很给力!

查看全部评分

18_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-8-8 09:09:13 | 显示全部楼层
aladdin_h 发表于 2019-8-6 18:12
基础不扎实,你matlab怎么样

截图:

我没学过c,课题需要做一个MFC,然后边学边做,零基础,matlab稍微好点吧,毕竟感觉简单点读取未知行数的txt数据到二维数组中
59_avatar_middle
最佳答案
0 
在线会员 发表于 2019-8-8 14:42:15 | 显示全部楼层
ysu 发表于 2019-8-8 09:09
我没学过c,课题需要做一个MFC,然后边学边做,零基础,matlab稍微好点吧,毕竟感觉简单点

嗯呢,了解了读取未知行数的txt数据到二维数组中
18_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-8-8 15:21:18 | 显示全部楼层

这样 取字节变成int  ,这要是0到9一位的数字占一个字节好像可以,但要是两位数呢,也不确定文档数据都是几位的啊,这样好像就不行了吧,有直接的方法吗,就是直接读到int数组里的
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-10-31 23:59

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表