當前位置:首頁 » 編程語言 » c語言的文件讀法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言的文件讀法

發布時間: 2022-09-08 15:08:25

c語言文件的文本怎麼讀取

根據你給的文件保存的數據的格式,我猜測每一行是一個學生的信息,格式如下:

序號 姓名 成績1 成績2 成績3 ...

知道了題意和題目要求,那麼一切將會變得簡單起來,請看代碼。

#include<stdio.h>

#defineREAD_FILE"data.txt"/*要讀取的文件的名字*/
#defineWRITE_FILE"T_data.txt"/*要寫入的文件的名字*/
#defineSTU_NUM10/*最大學生人數*/
#defineMAX_LEN50/*一行的最大字元數*/
/*
*獲取總分函數
*/
intget_sum(charconst*msg){

intsum=0;
inttmp;
/*
*遍歷一行字元
*/
while(*msg!=''){

/*
*以空格為一項成績的分隔標志
*/
tmp=0;
while(*msg!=''&&*msg!=''){
/*
*char類型數字轉int類型數字
*/
tmp=(tmp*10)+((*msg)-'0');
msg++;
}
/*
*求總和
*/
sum+=tmp;
if(*msg==''){

break;
}
msg++;
}
returnsum;
}

intmain(void){

FILE*rfp,*wfp;/*聲明讀取/寫入文件指針*/
charstudent[STU_NUM][MAX_LEN];/*存放讀取到的數據緩存數組*/
charch;
intsum[STU_NUM];/*成績總和*/
inti=0;
intj=0;
intk=0;
rfp=fopen(READ_FILE,"r");/*打開數據文件*/
if(rfp==NULL){

perror(READ_FILE);
exit(1);
}
for(i=0;i<STU_NUM;i++){

sum[i]=0;
}
/*
*逐個字元讀取文件的內容,
*直至遇到文件結束符為止。
*/
i=0;
while((ch=fgetc(rfp))!=EOF){
/*
*遇到換行符表示已經讀取完一個學生的資料;
*否則繼續將數據寫入緩存數組中。
*/
if(ch==' '){

student[i][j]='';
j=0;
i+=1;
}else{

student[i][j++]=ch;
}
}
student[i][j]='';
wfp=fopen(WRITE_FILE,"w");
/*
*開始分析數據
*根據文件存放數據的格式,從下標為2的位置開始分析數據。
*當遇到空格時證明後面的數據是成績,每一科成績分數均以空格分開。
*printf是顯示出來。
*fprintf是寫入另一個文件。
*/
for(j=0;j<=i;j++){

k=2;
printf("%c%c",student[j][0],student[j][1]);
fprintf(wfp,"%c%c",student[j][0],student[j][1]);
while(student[j][k]!=''){

printf("%c",student[j][k]);
fprintf(wfp,"%c",student[j][k]);
k++;
}
printf("'ssumofscoresumis");
fprintf(wfp,"'ssumofscoresumis");
sum[j]=get_sum(&student[j][k]);
printf("%d ",sum[j]);
fprintf(wfp,"%d ",sum[j]);
}
/*
*記得關閉文件哦。
*/
fclose(rfp);
fclose(wfp);
return0;
}

以下是運行結果:

這個程序僅僅是針對你的題目要求來的,文件存放的數據格式不能更改,否則會出錯。每一行必須以回車鍵結束,最後一行的最後一個字元之後什麼也不能有。我盡量以你看得懂的方法來寫,關鍵部分都帶有注釋,有問題不要追問了,自己多思考思考,實在解決不來還是很歡迎可以追問的哦,哈哈哈!!!

㈡ C語言讀文件按列讀怎麼讀讀txt文件

可以用fscanf

㈢ 【C語言】求問怎麼讀txt文件

下面是我的代碼,帶有注釋,如果有不懂的請繼續向我追問:
#include <stdio.h>
main()
{
//首先使用FILE打開文件
FILE *f=fopen("1.txt","r");
//用fscanf讀取
int event[1000],t[1000],i=0;
while(!feof(f))
{
fscanf(f,"%d%d",event[i],t[i]);
i++;
}
//關閉文件
fclose(f);
//輸出
for(int m=0;m<i;m++)
printf("%d %d\n",event[m],t[m]);
}
希望我的回答對你有幫助!
^o^

㈣ C語言中文件的讀取

c語言提供的標准庫中就有文件操作函數

關於文件讀取的有


size_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream);
intfgetc(FILE*stream);
char*fgets(char*s,intsize,FILE*stream);
intgetc(FILE*stream);
intfscanf(FILE*stream,constchar*format,...);
intvfscanf(FILE*stream,constchar*format,va_listap);
ssize_tgetline(char**lineptr,size_t*n,FILE*stream);
ssize_tgetdelim(char**lineptr,size_t*n,intdelim,FILE*stream);

讀取一個文件的步驟一般為

1、打開文件

2、讀取

3、關閉文件


打開文件的方法是使用fopen函數

FILE*fopen(constchar*path,constchar*mode);

其中第一個參數為要打開的文件的路徑

第二個表示以何種方式打開

包括

r 只讀取打開

r+ 讀寫

w 只寫

w+ 讀寫

a 追加

a+ 可讀,追加

b 以二進制方式打開


關閉文件的方法是使用fclose函數

intfclose(FILE*fp);


一個簡單的示例代碼如下

#include<stdio.h>

intmain(intargc,char**argv)
{
FILE*fp;
charbuf[512];
size_tn;

if((fp=fopen(argv[1],"rb"))==NULL)
{
printf("打開文件出錯! ");
return-1;
}

while(!feof(fp))
{
n=fread(buf,sizeof(char),sizeof(buf)-1,fp);
buf[n]='';
printf("%s",buf);
}

fclose(fp);
printf(" ");

return0;
}


不同的操作系統也會提供相應的操作文件的介面

也有相應的文件操作庫也會提供相應介面

不過讀取文件的步驟基本是一致的

㈤ C語言文件讀取

你好!!
fscanf 函數,讀文件的時候,是遇到空格結束一次讀取的,你文件每行記錄不確定;

不能批量格式讀取了,只能採用每次讀取一個的方式完成!

㈥ c語言如何讀取文件並輸出

c語言讀取文件並輸出的代碼如下:

#include<stdio.h>

inta;

charb,c[100];

intmain(){

FILE*fp1=fopen("input.txt","r");//打開輸入文件

FILE*fp2=fopen("output.txt","w");//打開輸出文件

if(fp1==NULL||fp2==NULL){//若打開文件失敗則退出

puts("不能打開文件!");

return0;

fscanf(fp1,"%d",&a);//從輸入文件讀取一個整數

b=fgetc(fp1);//從輸入文件讀取一個字元

fgets(c,100,fp1);//從輸入文件讀取一行字元串

printf("%ld",ftell(fp1));//輸出fp1指針當前位置相對於文件首的偏移位元組數

fputs(c,fp2);//向輸出文件寫入一行字元串

fputc(b,fp2);//向輸出文件寫入一個字元

fprintf(fp2,"%d",a);//向輸出文件寫入一個整數

fclose(fp1);//關閉輸入文件

fclose(fp2);//關閉輸出文件,相當於保存

return0;

C語言中使用fopen()函數實現文件的讀取,使用fgetc()函數讀取文件中的字元,使用fclose()實現文件的關閉,注意:打開文件流必須要關閉文件流,不然會持續佔用計算機內存資源。



(6)c語言的文件讀法擴展閱讀:

fopen函數

C語言中fopen函數可以兩個參數,fopen(const char *filename, const char *mode)。

第一個參數filename:這是 C 字元串,包含了要打開的文件名稱。

第二個參數mode:這是 C 字元串,包含了文件訪問模式。

㈦ C語言 如何一行行讀文件

#include
#include
void main()
{
char b[25];
//打開文件
FILE *fp;
fp = fopen("D:\\a.txt","r");
//獲取文件內容,每次讀一個字元,包括空格
for(int i=0;i<25;i++)
//fscanf(fp,"%c",&b[i]);
fgets(&b[i],2,fp);
fclose(fp);
//顯示讀取到的內容
for(int i=0;i<25;i++)
printf("%c",b[i]);
}

㈧ C語言讀文件按列讀怎麼讀

比如想要把第四,五列放在c[i], d[i]中。
fscanf(fp, "%*d%*d%%*d%d%d", &c[i], &d[i]); // 這樣就是只讀第四,第五列
fscanf(fp, "%*d%*d%%d%d%d", &c[i], &d[i]); // 這樣就是只讀第三,第四,第五列

由於 %*d 是讀入後,忽略的意思,也就是,讀入第一、第二列後都忽略了。

㈨ C語言讀取文件內容,按行讀

C語言逐行讀取文件內容 ,參考代碼如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#defineMAX_LINE1024
intmain()
{
charbuf[MAX_LINE];/*緩沖區*/
FILE*fp;/*文件指針*/
intlen;/*行字元個數*/
if((fp=fopen("test.txt","r"))==NULL)
{
perror("failtoread");
exit(1);
}
while(fgets(buf,MAX_LINE,fp)!=NULL)
{
len=strlen(buf);
buf[len-1]='';/*去掉換行符*/
printf("%s%d ",buf,len-1);
}
return0;
}