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

c語言怎麼讀文件

發布時間: 2022-02-10 12:21:24

1. c語言如何讀取文件

C語言讀取文件的具體步驟如下:

我們需要准備的材料分別是:電腦、C語言。

1、首先我們打開需要讀取的文件,點擊打開左上角文件中的「另存為」。

2. C語言如何讀取文件

文件流指針應打文件,要同操作兩文件,所要用兩文件流指針
,像要同操作兩箱.
程序理解:
兩箱,fp1,fp2;
打箱fp1,fp2,拿1024東西看,同放第二箱fp2,至箱東西完全拿,關閉兩箱.
例都差,看看stdlibf函數,C文件操作:
FILL
*pf;
//聲明指針,指針數組
FILE
pf[2]

FILE
**pf;
pf
=fopen();
fread()
or
fwrite()
...
...
//操作文件
fclose(pf)
//關閉文件

3. 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;
}

以下是運行結果:

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

4. 用C語言如何讀文件

#include <stdio.h>
#include <dir.h>

int main(void)
{
struct ffblk ffblk;
int done;
printf("Directory listing of *.*/n");
done = findfirst("*.*",&ffblk,0);
while (!done)
{
printf(" %s/n", ffblk.ff_name);
done = findnext(&ffblk);
}

return 0;
}
把它放在目錄下,運行即可!註:若沒有dir.h,就換個編譯器,像DEVCPP,那頭文件vc沒有!

5. 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()實現文件的關閉,注意:打開文件流必須要關閉文件流,不然會持續佔用計算機內存資源。



(5)c語言怎麼讀文件擴展閱讀:

fopen函數

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

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

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

6. C語言讀文件

#include <stdio.h>
#include <string.h>

void main()
{
char str[200];
FILE *fp;

if((fp=fopen("test.txt","rt"))==NULL)
{
printf("cannot open file\n");
return;
}
while (fgets(str,200,fp)) //讀取一行,並判斷文件是否結束
{
printf("%s",str);
}
fclose(fp);
}

7. c語言關於文件的讀

幫你一把。
兩個問題:
1.feof()函數是個比較特殊的函數,到達文件末尾時它要讀2次才會知道文件到達末尾,然後退出。所以第一次讀到的文件位置結尾符號被當做字元讀入,同時把上一次讀入的數據再寫一次到新文件中,接著第二次讀時判斷為結尾,退出。
因為feof僅僅是個宏,它僅僅讀取了上次讀寫動作發生後置於FILE 結構的一個標志位。所以第一次讀到文件結尾符時FILE中的標志位還沒有來得及更新。只有再進行一次讀寫它才會看到第一次讀到的結尾符號,從而返回true給FILE結構來更新其中的文件是否到達結尾的那個標志位。這與系統FILE 結構的實現有關。
知道了原因,解決辦法就很簡單了:先讀然後再判斷,這樣就不會到最後多讀一次。比如對讀字元就是
char ch;
ch=fgetc(in);/*先讀再判斷,而不是先不讀直接判斷*/
while(!feof(in))
{
fputc(ch,out);
ch=fgetc(in);
}
而不是:
while(!feof(in))//這個最後會多讀寫一次數據(當最後一行是空行)或會多讀寫一次文件結尾標志符(是個亂碼)
{
fputc(fgetc(in),out);
}
同理在c++中的類成員函數eof()等也是如此,碰到了也要注意。(這個問題很多人沒搞清楚)

2.fwrite(buffer,size,count,fp)函數本身的返回值為整數,返回的是實際讀寫的文件的塊數。如果返回值小於要讀寫的塊數count表明讀寫錯誤或已到達文件末尾。所以一次讀寫一個數據塊之間用判斷語句就可以了:
if(fread(p,sizeof(house),1,fp)==1)//表示讀寫正確或文件未到末尾
所以本題除了你的第二種方法外還可以這樣:
q=(luser)malloc(sizeof(user));
while(fread(q,sizeof(user),1,rp)==1)//直接用fread()函數的返回值判斷是否到文件末尾
{
q->next=lhead->next;
lhead->next=q;
q=(luser)malloc(sizeof(user));
}

8. C語言 如何一行行讀文件

#include<stdio.h>
#include<stdlib.h>

voidmain()
{
charb[25];
//打開文件
FILE*fp;
fp=fopen("D:\a.txt","r");
//獲取文件內容,每次讀一個字元,包括空格
for(inti=0;i<25;i++)
//fscanf(fp,"%c",&b[i]);
fgets(&b[i],2,fp);
fclose(fp);

//顯示讀取到的內容
for(inti=0;i<25;i++)
printf("%c",b[i]);
}

9. C語言怎樣讀文件

沒太看明白你的意思,是要復制這個文件到別的地方么?
C語言沒有這樣的標准庫函數,你可以按照這樣的思路復制文件:
以二進制模式打開源文件進行讀取,打開目標文件進行寫入
讀取源文件中的一個字元,如過沒有達到源文件的末尾,就把這個字元寫入目標文件
當達到源文件末尾時關閉文件

有變數的文件名可以使用sprintf函數得到文件路徑之後再打開
例如
int a = 2;
char *filePath[256];
想打開 a.txt(2.txt) 的話,用sprintf(filePath, "%d.txt", a); filePath的值就是2.txt了

10. c語言中如何讀文件名字

好像有函數,但是忘了,
實在不行,你在C語言里調用DOS的dir命令寫到一個文件里,然後再讀那個文件。
調用DOS為:
system("dir
/ad
/b
>fold.txt");
/*這個是文件夾列表*/
system("dir
/a-d
/b
>file.txt");
/*這個是文件列表*/
你再讀一下那兩件文件。
辦法是有點笨。
你自己再打開那兩個文本文件看一下,裡面的內容吧。