Ⅰ c語言文件操作
C語言標准庫提供了一系列文件I/O函數用於文件操作,比如fopen()用於打開文件、fread()、fwrite()用於讀寫文件、fseek()用於設置操作位置等等,一般C語言教程上都有文件I/O一章,細致內容,可以找本教科書學習一下。下面是一個示例代碼實現了,將一個磁碟文件中的信息復制到另一個磁碟文件中。
#include<stdio.h>
intmain()
{
FILE*in,*out;
charch,infile[10],outfile[10];
printf("Entertheinfilename: ");
scanf("%s",infile);
printf("Entertheoutfilename: ");
scanf("%s",outfile);
if((in=fopen(infile,"r"))==NULL)
{printf("cannotopeninfile ");
return0;
}
if((out=fopen(outfile,"w"))==NULL)
{printf("cannotopenoutfile ");
return0;
}
while(!feof(in))fputc(fgetc(in),out);
fclose(in);
fclose(out);
return0;
}
Ⅱ 在C語言中文件有幾種操作類型
主要是兩種文件類型:1)文本文件,2)
二進制文件
。
一般來說,人類可讀的文件都作為文本文件,例如一片文章。其餘都作為二進制文件,例如一個程序。
在C語言中,文件的操作是通過FILE
結構體
進行了,利用fopen返回一個指向FILE結構體的指針,在使用
fopen函數
過程中,使用mode控制符對是否打開哪類文件進行控制:
FILE
*fopen(
const
char
*filename,
const
char
*mode
);
filename:文件名,mode:打開的模式,規定了是可讀、可寫、追加之類的屬性。
r
以只讀方式打開
文件,該文件必須存在。
r+
以可讀寫方式打開文件,該文件必須存在。
rb+
讀寫打開一個二進制文件,允許讀寫數據,文件必須存在。
w
打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
w+
打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a
以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)
a+
以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。
(原來的EOF符不保留)
wb
只寫打開或新建一個二進制文件;只允許寫數據。
wb+
讀寫打開或建立一個二進制文件,允許讀和寫。
ab+
讀寫打開一個二進制文件,允許讀或在文件末追加數據。
如果調用失敗,返回一個空指針。
Ⅲ C語言文件操作的的概念
這個得跟計算機操作系統對於文件的處理有關了。
首先,計算機對於文件的操作是通過cpu往內存讀取的。
接著,再通過內存往硬碟(或者其他存儲設備)進行存儲。
反之也是這樣
好處:
由於cpu往內存讀取比較快。。。當有一些文件用得比較多,就讓它在內存上進行。比如說:你要弄一個word的文檔。只有最後結果才需要保存、你總不能一秒鍾對硬碟進行保存N多次吧,那樣太沒有效率了,其次對硬碟來說,想讓硬碟早點88的話就。。。。。
Ⅳ c語言程序文件操作
首先,你需要建立一個.c或者.cpp文件,還要建立一個.txt文件進行操作處理,並且寫上c語言的編譯預處理,頭文件,主函數。
2/6
然後你需要定一個文件指針,具體格式FILE*指針名。這個指針其實是一個結構指針,大家也不必過多的了解這個到底是什麼,只知道他就這樣用就可以了。
3/6
如果你想打開文件的話,你需要調用fopen函數,對於這個函數大家不必驚慌,其實很簡單,具體的格式為 文件指針=fopen("文件路徑+文件名","讀寫方式");
4/6
對於讀寫的方式有很多,比如r是只讀,w是打開文件新建並且只寫,r+是打開文件能讀能寫,w+新建文件能讀能寫。
5/6
如果程序把文件打開後不關閉,對於文件來說是很不安全的,所以需要關閉文件的函數fclose();如果想關閉p文件指針所指的文件,就寫fclose(p);這個函數具有返回值,如果關閉成功,就返回0.如果關閉失敗,就返回非0
6/6
此外,你可以調用fprintf()函數往文件里加東西,或者調用fputc向文件里添加字元,還可以調用fputs函數向文件里添加字元串。具體格式為
fprintf(文件指針,"添加格式",添加變數);
fputc(文件指針,添加的字元變數);
fputs(文件指針,添加的字元串);
注意事項
函數的參數不能少
Ⅳ C語言中對文件的操作
不管是什麼文件,在計算機系統里都是二進制,加b就是以最基本的方式讀取文件
對於文本文件,加b不加b是差不多的,但非文本文件,如果不加b,就會按文本方式
讀取,這樣讀出來的可能就會是亂碼
Ⅵ C語言文件操作的特點
一批數據以文件的組織形式可以存放在外部介質(主要為磁碟,光碟等)上,也可從介質上讀入內存.操作系統是以文件為單位對數字進行管理的.而各種C 的文件系統對其文件則可進行直接操作.本章所介紹的是ANSI C 的文件系統以及對文件的讀寫.
從本質上看,一個C文件不外乎是由一系列的位元組流或二進制流組成.前者對應的文件叫ASCII(或文本)文件;後者叫二進制文件;二進制文件是把數據在內存中存儲的形式原樣輸出到磁碟上;而文本文件則要經過把數據中每個字元轉換為ASCII碼值後存儲;在由磁碟向內存中載入時,需要反向轉換.
文件系統從對文件處理方法上又分為:"緩沖文件系統"和"非緩沖文件系統". 緩沖文件系統當文件打開後,系統自動為每個文件開辟一個緩沖區(緩沖區為內存的一個區域),從磁碟向內存載入,要通過文件緩沖區,每當緩沖區滿後,送入內存(程序數據區);從內存向磁碟寫文件時,先將數據寫入緩沖區,每當緩沖區寫滿後,再一次寫入磁碟.
Ⅶ C語言 對文件進行操作的三個主要過程是
C語言對文件進行操作的三個主要過程是:打開文件、操作文件、關閉文件。
C語言的文件處理功能依據系統是否設置「緩沖區」分為兩種:一種是設置緩沖區,另一種是不設置緩沖區。
由於不設置緩沖區的文件處理方式,必須使用較低級的I/O函數(包含在頭文件io.h和fcntl.h中)來直接對磁碟存取,這種方式的存取速度慢,並且由於不是C的標准函數,跨平台操作時容易出問題。
(7)C語言文件的操作分為擴展閱讀
C語言文件有不同的類型,在程序設計中,主要用到兩種文件:
(1)程序文件:包括源程序文件(後綴為.c)、目標文件(後綴為.obj)、可執行文件(後綴為.exe)等。這種文件的內容是程序代碼。
(2)數據文件:文件的內容不是程序,而是供程序運行時讀寫的數據,如在程序運行過程中輸出到磁碟(或其他外部設備)的數據,或在程序運行過程中供讀入的數據。如一批學生的成績數據、貨物交易的數據等。
為了簡化用戶對輸入輸出設備的操作,使用戶不必去區分各種輸入輸出設備之間的區別,操作系統把各種設備都統一作為文件來處理。從操作系統的角度看,每一個與主機相連的輸入輸出設備都看作一個文件。例如,終端鍵盤是輸入文件,顯示屏和列印機是輸出文件。
輸入輸出是數據傳送的過程,數據如流水一樣從一處流向另一處,因此常將輸入輸出形象地稱為流(stream),即數據流。流表示了信息從源到目的端的流動。在輸入操作時,數據從文件流向計算機內存,在輸出操作時,數據從計算機流向文件(如列印機、磁碟文件)。
C的數據文件由一連串的字元(或位元組)組成,而不考慮行的界限,兩行數據間不會自動加分隔符,對文件的存取是以字元(位元組)為單位的。輸入輸出數據流的開始和結束僅受程序控制而不受物理符號(如回車換行符)控制,這就增加了處理的靈活性。
Ⅷ C語言下提供了哪些有關文件的操作
1,兩種文件存取方式(輸入,輸出方式)
順序存取
直接存取
2,數據的兩種存放形式
文本文件
二進制文件
13.2文件指針
定義文件類型指針變數的一般形式:
FILE *指針變數名;
例如:
FILE *fp1,*fp2;
13.3打開文件
在使用文件之前,需打開文件.在C里使用fopen函數打開文件.格式為:
fopen(文件名,文件使用方式);
此函數返回一個指向FILE類型的指針.如:
FILE *fp;
fp=fopen("file_1","r");
如果調用成功,fp就指向file_1,否則返回為NULL,所以為了保證文件的正確使用,要進行測試.採用如下語句:
If((fp=fopen("file_1","r"))==NULL)
{
printf("Cannot open this file\n");
exit(0);
}
最常用的文件使用方式及其含義如下:
1,"r".為讀而打開文本文件.(不存在則出錯)
2,"rb".為讀而打開二進制文件.
3,"w".為寫而打開文本文件.(若不存在則新建,反之,則從文件起始位置寫,原內容將被覆蓋)
4,"wb".為寫而打開二進制文件.
5,"a".為在文件後面添加數據而打開文本文件.(若不存在,則新建;反之,在原文件後追加)
6,"ab".為在文件後面添加數據而打開一個二進制文件.
最常用的文件使用方式及其含義如下:
7,"r+".為讀和寫而打開文本文件.(讀時,從頭開始;在寫數據時,新數據只覆蓋所佔的空間,其後不變)
8,"rb+".為讀和寫而打開二進制文件.只是在隨後的讀寫時,可以由位置函數設置讀和寫的起始位置.
9,"w+".首先建立一個新文件,進行寫操作,隨後可以從頭開始讀.(若文件存在,原內容將全部消失)
10,"wb+".功能與"w+"同.只是在隨後的讀寫時,可以由位置函數設置讀和寫的起始位置.
最常用的文件使用方式及其含義如下:
11,"a+".功能與"a"相同;只是在文件尾部添加新的數據後,可以從頭開始讀.
12,"ab+".功能與"a+"相同;只是在文件尾部添加新數據之後,可以由位置函數設置開始讀的起始位置.
13.4關閉文件
當文件的讀寫操作完成之後,使用fclose函數關閉文件.格式如下:
fclose(文件指針)
如:fclose(fp);
13.5調用getc(fgetc)和putc(fputc)函數進行輸入和輸出
1,調用putc(或fputc)函數輸出一個字元
調用形式為:
putc(ch,fp);
功能是:將字元ch寫到文件指針fp所指的文件中去.當輸出成功,putc函數返回所輸出的字元;否則,返回一個EOF值.EOF是在stdio.h庫
函數文件中定義的符號常量,其值等於-1.
13.5調用getc(fgetc)和putc(fputc)函數進行輸入和輸出
例如:把從鍵盤輸入的文本按原樣輸出到名為file_1.dat文件中,用字元@作為鍵盤輸入結束標志.
#include
Void main()
{
FILE *fpout;
char ch;
if(fpout=fpopen("file_1","w")==NULL)
{
printf("Cannot open this file!\n");
exit(0);
}
ch=getchar();
while(ch!='@')
{ fputc(ch,fpout); ch=getchar(); }
fclose(fpout);
}
2.調用getc(或fgetc)函數輸入一個字元
調用形式為:
ch=getc(pf);
功能是:從pf指定的文件中讀如一個字元,並把它作為函數值返回.
例如:把一個已存在磁碟上的file_1.dat文本文件中的內容,原樣輸出到終端屏幕上.
#include
void main(){
FILE *fpin;
char ch;
if((fpin=fopen("file_1.dat","r"))==NULL)
{ printf("Cann't open this file!\n");exit(0);}
ch=fgetc(fpin);
while (ch!=EOF)
{ putchar(ch); ch=fgetc(fpin);}
fclose(fpin);
}
13.6判斷文件結束函數feof
EOF可以作為文本文件的結束 標志,但不能作為二進制文件的結束符.feof函數既可以判斷二進制文件,又可以判斷文本文件.
例:編寫程序,用於把一個文本文件(源)復制到另一個文件(目的)中,源文件名和目的文件名由命令行輸入.命令形式如下:
可執行程序名 源文件名 目的文件名
#include
void file(FILE* ,FILE *);
void main(int argc,char *argv[]){
FILE *fpin,*fpout;
if(argc==3)
{ fpin=fopen(argv[1],"r");
fpout=fopen(argv[2],"w");
file(fpin,fpout);
fclose(fpin);fclose(fpout);
}
else if(argc>3)
printf("The file names too many!!\n";
else
printf("There are no file names for input or output!!\n );
}
void file(FILE *fpin,FILE *fpout)
{
char ch;
ch=getc(fpin);
while(!feof(fpin))
{putc(ch,fpout); ch=getc(fpin);}
}
13.7fscanf函數和fprintf函數
1,fscanf函數
fscanf只能從文本文件中按格式輸入,和scanf函數相似,只不過輸入的對象是磁碟上文本文件中的數據.調用形式為:
fscanf(文件指針,格式控制字元串,輸入項表)
例如:fscanf(fp,"%d%d",&a,&b);
fscanf(stdin,"%d%d",&a,&b);
等價於scanf("%d%d",&a,&b);
3.fprintf函數
fprintf函數按格式將內存中的數據轉換成對應的字元,並以ASCII代碼形式輸出到文本文件中.Fprintf函數和printf函數相似,只是
將輸出的內容按格式存放到磁碟的文本文件中.調用形式如下:
fprintf(文件指針,格式控制字元串,輸出項表)
如:fprintf(fp,"%d %d",x,y);
以下語句 fprintf(stdout,"%d %d",x,y)
13.8fgets函數和fputs函數
1,fgets函數
fgets函數用來從文件中讀入字元串.調用形式如下:
fgets(str,n,fp);
函數功能是:從fp所指文件中讀入n-1個字元放入str為起始地址的空間內;如果在未讀滿n-1個字元時,則遇到換行符或一個EOF結束本次讀操作,
並已str作為函數值返回.
13.8fgets函數和fputs函數
2,fputs函數
fput函數把字元串輸出到文件中.函數調用形式如下:
fputs(str,fp);
注意:為了便於讀入,在輸出字元串時,應當人為的加諸如"\n"這樣的字元串.
13.9fread函數和fwrite函數
fread and fwrite函數用來讀,寫二進制文件.它們的調用形式如下:
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
buffer:要輸入或輸出的數據塊的首地址
count:每讀寫一次,輸入或輸出數據塊的個數
size:每個數據塊的位元組數
fp:文件指針
13.9fread函數和fwrite函數
例如有如下結構體:
struct st{
char num[8];
float mk[5];
}pers[30];
以下循環將把這30個元素中的數據輸出到fp所指文件中.
for(i=0;i<30;i++)
fwrite(&pers[i],sizeof(struct st),1,fp);
13.9fread函數和fwrite函數
以下語句從fp所指的文件中再次將每個學生數據逐個讀入到pers數組中.
i=0;
fread(&pers[i],sizeof(struct st),1,fp);
while(!feof(fp))
{ i++;
fread(&pers[i],sizeof(struct st),1,fp);
}
13.10文件定位函數
1,fseek函數
fseek函數用來移動文件位置指針到指定的位置上,接著的讀或寫操作將從此位置開始.函數的調用形式如下:
fseek(pf,offset,origin)
pf:文件指針
offset:以位元組為單位的位移量,為長整形.
origin:是起始點,用來指定位移量是以哪個位置為基準的.
1,fseek函數
位移量的表示方法
標識符 數字 代表的起始點
SEEK_SET 0 文件開始
SEEK_END 2 文件末尾
SEEK_CUR 1 文件當前位置
假設pf已指向一個二進制文件,則;
fseek(pf,30L,SEEK_SET)
fseek(pf,-10L*sizeof(int),SEEK_END)
對於文本文件,位移量必須是0;如:
fseek(pf,0L,SEEK_SET)
fseek(pf,0L,SEEK_END)
2. ftell函數
ftell函數用以獲得文件當前位置指針的位置,函數給出當前位置指針相對於文件開頭的位元組數.如;
long t;
t=ftell(pf);
當函數調用出錯時,函數返回-1L.
我們可以通過以下方式來測試一個文件的長度:
fseek(fp,0L,SEEK_END);
t=ftell(fp);
3.rewind函數
調用形式為:
rewind(pf);
函數沒有返回值.函數的功能是使文件的位置指針回到文件的開頭.
Ⅸ C語言的數據文件有哪些都有什麼特點
具體來說,C 語言的數據文件類型分為:文本文件、以及二進制文件。它們的具體特點如下:
(1)、文本文件,在 C 語言編程中,使用 fopen( ) 庫函數,文件的最基本讀寫方式為:r(讀)、w(寫);當然了,還有以添加方式進行操作的。
(2)、二進制文件,在 C 語言編程中,使用 fopen( ) 庫函數,文件的最基本讀寫方式為:
rb(二進制讀)、wb(二進制寫);當然了,二進制方式也有以添加方式進行操作的。
這兩種文件操作方式最大的不同就是對於回車符的處理。在以文本文件方式打開文件時,
回車換行符變為一個字元;而使用二進制方式進行處理時就是二個字元。
例如:
abcde
在文本文件中,該文件長度是 6 個字元(5個字母、以及一個換行符 \n),但是如果以二進制方式進行處理的話,就是 7 個字元(5個字母、以及 \r\n 兩個字元)。