『壹』 如何用c语言从txt文件中读取数据
用C语言从txt文件中读取数据,可以使用C标准库文件自带的文件接口函数进行操作。
一、打开文件:
FILE
*fopen(const
char
*filename,
const
char
*mode);
因为txt文件为文本文件,
所以打开时选择的mode应为"r"或者"rt"。
二、读取文件:
读取文件应根据文件内容的格式,以及程序要求,选择读取文件的函数。可以使用一种,也可以几种混用。
常用的文件读取函数如下:
1、fgetc,
从文件中读取一个字节并返回。
适用于逐个字节读取。
2、
fgets,
从文件中读取一行。适用于整行读取。
3、fscanf,
格式化读取文件,
在已经清楚文件存储格式下,可以直接用fscanf把文件数据读取到对应类型的变量中。
4、fread,
整块读取文件,
对于txt文件比较少用。
三、关闭文件:
读取结束后,应调用fclose函数关闭文件。
『贰』 java中怎么从文件中读取数
可以用scanner先读取这字符串,然后根据题意分割成整形数放入数组再处理。
『叁』 java中怎样从文件中读取数据
分为读字节,读字符两种读法x0dx0a◎◎◎FileInputStream 字节输入流读文件◎◎◎x0dx0apublic class Maintest {x0dx0ax0dx0apublic static void main(String[] args) throws IOException {x0dx0ax0dx0aFile f=new File("G:\\just for fun\\xiangwei.txt");x0dx0ax0dx0aFileInputStream fin=new FileInputStream(f);x0dx0ax0dx0abyte[] bs=new byte[1024];x0dx0ax0dx0aint count=0;x0dx0awhile((count=fin.read(bs))>0)x0dx0a{x0dx0ax0dx0aString str=new String(bs,0,count);//反复定义新变量:每一次都 重新定义新变量,接收新读取的数据x0dx0ax0dx0aSystem.out.println(str);//反复输出新变量:每一次都 输出重新定义的新变量x0dx0a}x0dx0afin.close();x0dx0a}x0dx0a}x0dx0ax0dx0a◎◎◎FileReader 字符输入流读文件◎◎◎x0dx0apublic class Maintest {x0dx0apublic static void main(String[] args) throws IOException {x0dx0ax0dx0aFile f=new File("H:\\just for fun\\xiangwei.txt");x0dx0ax0dx0aFileReader fre=new FileReader(f);x0dx0ax0dx0aBufferedReader bre=new BufferedReader(fre);x0dx0ax0dx0aString str="";x0dx0awhile((str=bre.readLine())!=null)//●判断最后一行不存在,为空x0dx0a{x0dx0aSystem.out.println(str);x0dx0a}x0dx0abre.close();x0dx0a fre.close();x0dx0ax0dx0a}x0dx0ax0dx0a}
『肆』 c语言,怎么从文件读取数据到结构体,求助
C 结构体
实现读取文件并保存到结构体代码:
#include<stdio.h>
#include<stdlib.h>
//文件操作格式化读取保存到结构体数组
#defineBUFSIZE1000
structdata
{
charG[4];
floatXs;//起点坐标
floatYs;
floatE;
};
intmain()
{
FILE*fp;
inti,j,r_n=0;
charbuf[BUFSIZE],c;
//打开文件
fp=fopen("E:\\line.txt","r");
if(fp==NULL)
{
printf("Cannotopenfile!\n");
return1;
}
//计算文件中数据的行数
while(!feof(fp))
{c=fgetc(fp);
if(c=='\n')
r_n++;
}
printf("r_n=%d\n",r_n);
rewind(fp);//将指针重置到第一行
structdata*line1=NULL;
line1=(structdata*)malloc(sizeof(structdata)*(r_n+1));//创建一个结构体含有(r_n+1)个数据
for(i=1;i<=r_n;i++)
{
fgets(buf,BUFSIZE,fp);//一次读取一行
sscanf(buf,"%sX%fY%fE%f",&line1[i].G,&line1[i].Xs,&line1[i].Ys,&line1[i].E);//分别跳过XYE读取数据
}
//关闭文件
fclose(fp);
for(i=1;i<=r_n-1;i++)
{
printf("\n%s%.3f%.3f%.3f",line1[i].G,line1[i].Xs,line1[i].Ys,&line1[i].E);
}
free(line1);//释放
return0;
}
运行效果:
函数sscanf(),它是C语言中从一个字符串中读进与指定格式相符的数据的函数。
函数原型:
intsscanf(stringstr,stringfmt,mixedvar1,mixedvar2...);
intscanf(constchar*format[,argument]...);
sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。
其中的format可以是一个或多个{%[*][width][{h|l|I64|L}]type|''|'\t'|'\n'|非%符号}
注:
1、*亦可用于格式中,(即%*d和%*s)加了星号(*)表示跳过此数据不读入.(也就是不把此数据读入参数中)
2、{a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d。
3、width表示读取宽度。
4、{h|l|I64|L}:参数的size,通常h表示单字节size,I表示2字节size,L表示4字节size(double例外),l64表示8字节size。
5、type:这就很多了,就是%s,%d之类。
6、特别的:%*[width][{h|l|I64|L}]type表示满足该条件的被过滤掉,不会向目标参数中写入值
支持集合操作:
%[a-z]表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
%[aB']匹配a、B、'中一员,贪婪性
%[^a]匹配非a的任意字符,贪婪性
『伍』 C语言怎样将数字从文件里逐个读取出来
可以通过fscanf,从文件中依次读取数据。
当fscanf返回EOF时,表示读到文件结尾,这时停止读专取即可。属
以文件中存储的为空格分隔的整型字符为例,可以写作:
while(fscanf(fp,"%d",&n) != EOF)//从打开的文件指针fp指向的文件读数据,每次读一个整型,直至文件结尾。
printf("%d ", n);