如何使用C语言从TXT文件中读取如下格式的数据并存储与数组中?

数据格式如下:
1 2 3 4 1.1 1

8 9 6 3 2.5 1
即多行多列,既有整型数据也有浮点型数据。只需写出简单思路。多谢!
最终目的是存储于数组中,方便调用。

1.fopen函数打开需要读取的文本,获取该文件的文件描述符

2.使用fscan()函数对文件进行读取。

3.放到二维数组其实就是读取相应格式的数据,然后对应二维数组的每个位置

例如

#include "stdio.h"
#define M 300
#define N 50

void main()
{
 int i,j;
 float a[M][N]={0};
 FILE *fp;
 if((fp=fopen("test.txt","rt"))==NULL)
 {
  printf("cannot open file\n");
  return;
 }
 for(i=0;i<M;i++)
 {
 for(j=0;j<N;j++)
  fscanf(fp,"%f",&a[i][j]);
 fscanf(fp,"\n");
}
 fclose(fp);
 for(i=0;i<M;i++)
 {
 for(j=0;j<N;j++)
     printf("%g ",a[i][j]);
   printf("\n");
}
}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-05
你的每个数据之间有什么明显的间隔符么?
还是按行存储的?
以间隔符为分割点,每次读取出来间隔符之间的字符存储到字符串中,
然后判断字符串中是否存在.(小数点),
不存在就用atoi转化为整形。
存在小数点用atof函数转化为浮点型。

或者不判断小数点是否存在,统一atof就行。追问

行之间没有明显间隔符,就是普通换行,可能写问题的时候多按了一下回车。
在下非计算机专业,只是被要求做一些模拟计算。我得到的数据时每一行各数据之间使用的TAB那个东西隔开的,这在读取时是否与空格不同呢?另外,如何判断当前读取的数据为一行的末尾呢?即如何控制程序进入下一行继续读取呢?

追答

那就是按行存储的啊,行末尾是'\r\n'或者'\n'字符。
每次读取一行就行了。
你读取了这一行,文件内部指针自然就走到了这行的结尾,略去结尾符不读,自然的指针就到了下一行了,不用转化。
C里面也是有按行读取的函数的,或者一些函数按照行读取的格式,有很多种方法的,你可以百度一下,选择你最适合的方法就行了。

本回答被提问者采纳
第2个回答  2013-07-18
二次嵌套循环实现:
外循环从文件中获取所有行的数据,至于如何判断行尾,对应用程序员是透明的,不同的操作系统有不同特定字符判断法,即对应不同的库函数实现,应用程序员只需要调用标准库函数即可,比如可以用readline,getline实现行读取

内循环对每行数据中的每个值遍历,每一行中每个数据之间应该有分隔符不然系统无法分隔数据,可以用strtok分隔,再用atoi,atof,strtod等完成数值转换,最后将其存入数组即可

如何使用C语言从TXT文件中读取如下格式的数据并存储与数组中?
1.fopen函数打开需要读取的文本,获取该文件的文件描述符 2.使用fscan()函数对文件进行读取。3.放到二维数组其实就是读取相应格式的数据,然后对应二维数组的每个位置 例如 include "stdio.h"#define M 300#define N 50void main(){ int i,j; float a[M][N]={0}; FILE *fp; if((fp=fop...

C语言,怎么把TXT文件里的数据赋值到数组里面
1 以文本方式打开文件。2 循环用fscanf格式化输入数据到数组。3 判断fscanf的返回值,如果显示到达文件结尾,退出输入。4 关闭文件。5 使用数据。二、代码实现。设定文件名为in.txt, 存有一系列整型数据,以空格或换行分隔。代码可以写作:include <stdio.h>int main(){int v[100];\/\/开一个足够大...

如何用C语言读取txt文件中的数据到程序的数组中?
fin = fopen("abc.txt","r"); \/\/ 打开文件,按读的方式打开 for (i=0;i<50;i++)fscanf(fin,"%d %d", &a[i][0], &a[i][1]); \/\/ 循环读 fclose(fin); \/\/关闭文件 for (i=0;i<50;i++) printf("%d %d\\n",a[i][0],a[i][1]); \/\/输出来看看 return 0...

C语言中从.txt文件中按行读取字符串至数组中,怎么写?
可以设定文件名为in.txt, 存有一系列整型数据,以空格或换行分隔写。代码如下:include int main(){ int v[100];\/\/开一个足够大的数组。int i = 0, j;FILE *fp;\/\/文件指针 fp = fopen("in.txt", "r");\/\/以文本方式打开文件。if(fp == NULL) \/\/打开文件出错。return -1;while...

C\/C++如何读取TXT文件的行数和把TXT文件的内容存到数组中
C语言读取TXT文件的行数并把把TXT文件的内容存到数组中,需要根据每行的内容(字符,数字,字符串)选取fgets、fscanf或者fgets。这里假设每行是一个字符串,每行不超过127个字符(用数组存字符串,最后一位存'\\0'),选取fgets进行读取。示例代码如下:include <stdio.h>#include <stdlib.h>int main...

利用C语言读取含文件头的txt文本并将学生信息和成绩分别保存到数组?
1、fgets每次读取一行,根据文本格式找到姓名和分数的行字符串。2、分别解析行字符串,获取其中的姓名和成绩(成绩字符串拆解后用atof函数转换成浮点数保存在浮点数数组中)。3、通过malloc和realloc申请一个对应大小的结构数组(你题目要求用数组,换成链表更好)4、将解析的数据保存到结构数组成员中。注意...

c语言入门代码009 从 txt 文本文件中加载数据到结构体数组
第一步,通过fopen函数以读取模式打开文件,准备从文件头部获取数据。第二步,文件中逐个读取结构体字段,并将数据保存到数组中,直到文件结尾。feof函数用于检测文件是否达到末尾,判断是否需要结束循环。在读取数据时,使用fscanf函数,与scanf相似,但添加了文件指针参数,用于在文件内容中执行读取操作。数据...

C语言逐行读取txt中的数据,并保存到数组中
FILE *fin = fopen("file.txt", "r"); \/*假设文件名为file.txt*\/ int a[100], i; for (i = 0; i < 100; i++) { fscanf(fin, "%d", &a[i]); } fclose(fin); \/*此时已经读取完毕,可以进行接下来的处理了*\/ return 0;} ...

C语言读取txt文件中的数到数组?
define N 10000 int main(){ FILE *fp;if((fp=fopen("D:\\\\123.txt","r"))==NULL)\/\/判断文件是否打开成功 {\/\/读取D盘下,名为123的文本文件 printf("文件打开失败\\n");exit(0);} else printf("文件打开成功\\n");double a[N];for(int i=0;i<5;i++)\/\/读取五个浮点型数据 fsc...

跪求!!c语言怎样实现从txt文件中读取数据并存入结构数组??
声明一个struct data 对象 假如是Data,一次读取一个Data的数据,那么 fread((void*)&Data, sizeof(Data), 1, fstream); 即可。

相似回答