社区
C语言
帖子详情
C语言中如何读入未知二维数组的行数和列数?
hawkjxr
2005-08-07 08:56:16
文件中内容大致如下:
57 71 87 97 99 101 103 113 114 115 128 129 131 137 147 156 163 186
57 71 87 97 99 101 103 113 114 115 128 129 131 137 147 156 163 186
请问,如何写一个读入程序。
前提条件是数组的行数和列数都是未知的,问题的关键在于如何知道什么时候换行.
使得所有数据可以进入一个二维数组?
...全文
3178
18
打赏
收藏
C语言中如何读入未知二维数组的行数和列数?
文件中内容大致如下: 57 71 87 97 99 101 103 113 114 115 128 129 131 137 147 156 163 186 57 71 87 97 99 101 103 113 114 115 128 129 131 137 147 156 163 186 请问,如何写一个读入程序。 前提条件是数组的行数和列数都是未知的,问题的关键在于如何知道什么时候换行. 使得所有数据可以进入一个二维数组?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hawkjxr
2005-08-12
打赏
举报
回复
那一行是字符啊,我读入的是一系列的数据
doway
2005-08-11
打赏
举报
回复
//a.txt
57 71 87 97 99 101 103 113 114 115 128 129 131 137 147 156 163 186
57 71 87 97 99 101 103 113 114 115 128 129 131 137 147 156 163 186
//fg.c
#include <stdio.h>
main()
{
int MAX = 100;
FILE *fp;
char line[100];
fp = fopen("a.txt", "r");
while (fgets(line, MAX, fp) != NULL)
printf("%s", line);
fclose(fp);
}
fgets 是标准库中的函数,每次读入一行。下边还会有问题吗?
hawkjxr
2005-08-11
打赏
举报
回复
getline又怎么用?
而且c的库函数里面有 getline函数吗》?
doway
2005-08-09
打赏
举报
回复
如果是流,就按流处理。
如果是硬盘上的文件,还可以使用内存映射文件处理。
换行不就是\r\n吗?怎么说“C只有文件结束符号可以识别呢?”?
jixingzhong
2005-08-09
打赏
举报
回复
我还是同意 QunKangLi(To iterate is human,to recurse divine):在文件第一行写入数组大小!!
hawkjxr
2005-08-09
打赏
举报
回复
但是读字符怎么能把\r\n读出来呢?
fire314159
2005-08-08
打赏
举报
回复
不过回车的识别还真的有点麻烦,难道要用字符输入,每输入一个,辨别是否回车后再来转成数字?晕菜哦。慢死了。
fire314159
2005-08-08
打赏
举报
回复
getline也不是能无限读入的,这里应该假设数组个数非常大,远远超过目前库函数能读入的最大数目。现在只能想到使用指针,做动态链表。输完后知道总数了,再切分。
fire314159
2005-08-08
打赏
举报
回复
楼上,现在是别人规定死了外部接口规则,我们去适应哦
QunKangLi
2005-08-08
打赏
举报
回复
最简单的方法:
在文件第一行写入数组大小:
3 4
00 01 02 03
10 11 12 13
20 21 22 23
zenny_chen
2005-08-07
打赏
举报
回复
首先定两个计数器,一个用来计数行数,一个用来计数列数。
使用数组动态分配。如果文本中为小于255的ASCII码,则可以用unsigned char类型数组保存。
#include <stdlib.h>
unsigned char **store;
void InitStore()
{
store = (unsigned char**)malloc(sizeof(*store));
}
这样可以自己定一个列长,比如说10。
那么可以一直都文本,直到计数大于10。
store[i] = (unsigned char*)malloc(sizeof(**store) * 10);
for(int j=0; j<10; j++)
{
store[i][j] = get_a_char(file);
}
xiaocai0001
2005-08-07
打赏
举报
回复
这些数值保存在文件里就好办了啊
你可以用getline()这个函数就可以一行一行的读取数据了,不过读出来的还是字符串形式的,
读完了你还得加工识别。
hawkjxr
2005-08-07
打赏
举报
回复
我问的程序只是一个工程的一部分,必须把矩阵列入二维数组
而程序里面所有的数据都是由外界输入,
现在要计算一个数组,你说我怎么知道这个数组的大小呢?文件里面不会直接给出
好象以前Pascal都可以识别出文件里面的行结束符号,为什么
C只有文件结束符号可以识别呢?
xiaocai0001
2005-08-07
打赏
举报
回复
呵呵怎么不可能呢?
静态数组当然是必须知道大小的,但动态数组呢?
int *array;
int p;
cout<<"Please input the array size";
cin>>p;
if (p>0)
{
array = new int[p];
}
你说上面这段代码能不能产生一个动态数组呢?
doway
2005-08-07
打赏
举报
回复
那是不可能地。
使用数组必须知道大小。数组通常都是你自己创建的,因此你可以知道大小。从其他地方过来的数组,别人会同时给你个参数,告诉你数组大小。你给别个时也一样。
void f(int ia[],int)
这里的 int ia[] 实际上是个指针,其实应该象下边这样定义:
void f(int *, int)
xiaocai0001
2005-08-07
打赏
举报
回复
那你缓冲区设置大一些就可以了
因为是动态的,所以肯定使用不方便了。
你也可以考虑用动态链表来处理。
但你要是直接以数字方式读入数据的话,识别回车这个问题我还没想到能不能有办法。
hawkjxr
2005-08-07
打赏
举报
回复
那这样的话,由于不知道数据的多少,要是数字一共有1000个一行怎么办呢?
xiaocai0001
2005-08-07
打赏
举报
回复
没这么夸张吧,不过可以当作字符串来处理,先以字符串读入,到程序中再进行识别,得到所需要的行列值
青少年C++编程NOIP/CSP竞赛通关语法-
二维数组
1、本课程为零基础C++语法专题课,是青少儿参加信息学奥赛NOIP/CSP需要学习的语法专题课; 2、本课程每节课均配有练习题以及真题,以锻炼孩子的解题能力;... 6、本课程介绍的是
二维数组
。也是历来竞赛重要考点。
c语言
二维数组
行和列怎么看,
二维数组
行列怎么看
c语言
中
如何获取一个
二维数组
的行
列数
?有两种方式: 1
二维数组
的行
列数
在定义的时候就是确定好的,所以编程人员是知道
二维数组
的大小以及行
列数
的。 所以可以直接使用行
列数
的值。 为方便维护,可以将行
列数
定义为...
C语言
中
行列
未知
时形参如何接收
二维数组
C语言
中
行列已知和
未知
时形参如何接收
二维数组
一、实参是一个已知行和列的
二维数组
时,实参传递直接是数组名 而形参接收可以是: 1.
二维数组
void func1(int arr[10][10]); void func1(int arr[][10]);//必须指定...
【初学
c语言
】如何定义行
列数
都
未知
的连续
二维数组
如何定义行
列数
都
未知
的连续
二维数组
c语言
二维数组
怎样做函数参数传递,跟周立功学
C语言
编程:如何将
二维数组
作为函数参数传递?这三要素要时刻谨记!...
1.7.3将
二维数组
作为函数参数>>>1.函数原型当将数组的数组作为函数参数时,数组名同样视为地址,因此相应的形参如同一维数组一样也是一个指针,比较困难的是如何正确地声明一个指针变量pData指向一个数组的...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章