『壹』 如何用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);