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

c語言課程文件存取

發布時間: 2022-08-16 12:12:46

c語言中文件的存取是什麼意思,如何實現,scanf、gets算是嗎

所謂的文件存取,指的是在程序中實現對文件的讀取和存入操作。
這個針對不同的數據,有不同的函數可以實現,也針對是文本文件還是二進制文件,有不同的函數
但不管什麼操作,都得先打開文件,例如
FILE *fp;
fp=fopen("a.txt","w");
具體的文件相關函數,你可以查查資料

㈡ C語言課程設置

10分。。。。

㈢ C語言中文件的存取方式是什麼

二進制方式 和 文本方式。
fopen 里可以定義 r,w,a,b 組合
順序存取 或 隨機存取(用fseek等函數幫助)

㈣ c語言如何用文件存儲數據

具體操作步驟如下:

1、首先,創建一個新文件夾,在該文件夾中創建一個文檔,如下圖所示,然後進入下一步。

㈤ C語言數據文件有幾種存儲方式每種存儲形式各有什麼特點

一、auto auto稱為自動變數。 局部變數是指在函數內部說明的變數(有時也稱為自動變數)。用關鍵字auto進7行說明, 當auto省略時, 所有的非全程變數都被認為是局部變數, 所以auto實際上從來不用。 局部變數在函數調用時自動產生, 但不會自動初始化, 隨函數調用的結束, 這個變數也就自動消失了, 下次調用此函數時再自動產生, 還要再賦值, 退出時又自動消失。 二、static static稱為靜態變數。根據變數的類型可以分為靜態局部變數和靜態全程變數。 1. 靜態局部變數 它與局部變數的區別在於: 在函數退出時, 這個變數始終存在, 但不能被其它、函數使用, 當再次進入該函數時, 將保存上次的結果。其它與局部變數一樣。 2. 靜態全程變數 Turbo C2.0允許將大型程序分成若干獨立模塊文件分別編譯, 然後將所有模塊的目標文件連接在一起, 從而提高編譯速度, 同時也便於軟體的管理和維護。靜態全程變數就是指只在定義它的源文件中可見而在其它源文件中不可見的變數。它與全程變數的區別是: 全程變數可以再說明為外部變數(extern), 被其它源文件使用,而靜態全程變數卻不能再被說明為外部的, 即只能被所在的源文件使用。 三、extern extern稱為外部變數。為了使變數除了在定義它的源文件中可以使用外, 還要被其它文件使用。因此, 必須將全程變數通知每一個程序模塊文件, 此時可用extern來說明。 四、register register稱為寄存器變數。它只能用於整型和字元型變數。定義符register說明的變數被Turbo C2.0存儲在CPU的寄存器中, 而不是象普通的變數那樣存儲在內存中, 這樣可以提高運算速度。但是Turbo C2.0隻允許同時定義兩個寄存器變數,一旦超過兩個, 編譯程序會自動地將超過限制數目的寄存器變數當作非寄存器變數來處理。因此, 寄存器變數常用在同一變數名頻繁出現的地方。另外, 寄存器變數只適用於局部變數和函數的形式參數, 它屬於auto型變數,因此, 不能用作全程變數。定義一個整型寄存器變數可寫成: register int a;

㈥ C語言——保存讀取文件

1.用文件操作函數就可以實現讀取和保存。打開函數fopen,mode參數設置為「r」就可以使用fscanf函數讀取文件內容。用fclose函數就可以實現保存並關閉文件。
2.對於程序來說,不管後綴名如何,文件分為兩種類型:文本文件和二進制文件。
c語言里有一系列文件操作函數。區分文本和二進制文件,需要在打開文件時設置不同的控制符mode的變數即可。
3.fopen的函數原型:file
*
fopen(const
char
*
path,const
char
*
mode);
fopen函數的第一個參數是文件路徑,第二個參數是打開方式,有以下幾種方式:
r
以只讀方式打開文件,該文件必須存在。
r+
以可讀寫方式打開文件,該文件必須存在。
rb+
讀寫打開一個二進制文件,允許讀數據。
rw+
讀寫打開一個文本文件,允許讀和寫。
w
打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
w+
打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a
以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(eof符保留)
a+
以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。
(原來的eof符不保留)
wb
只寫打開或新建一個二進制文件;只允許寫數據。
wb+
讀寫打開或建立一個二進制文件,允許讀和寫。
wt+
讀寫打開或著建立一個文本文件;允許讀寫。
at+
讀寫打開一個文本文件,允許讀或在文本末追加數據。
ab+
讀寫打開一個二進制文件,允許讀或在文件末追加數據。
上述的形態字元串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b
字元用來告訴函數庫打開的文件為二進制文件,而非純文字文件。

㈦ C語言 對文件進行操作的三個主要過程是

C語言對文件進行操作的三個主要過程是:打開文件、操作文件、關閉文件。

C語言的文件處理功能依據系統是否設置「緩沖區」分為兩種:一種是設置緩沖區,另一種是不設置緩沖區。

由於不設置緩沖區的文件處理方式,必須使用較低級的I/O函數(包含在頭文件io.h和fcntl.h中)來直接對磁碟存取,這種方式的存取速度慢,並且由於不是C的標准函數,跨平台操作時容易出問題。


(7)c語言課程文件存取擴展閱讀

C語言文件有不同的類型,在程序設計中,主要用到兩種文件:

(1)程序文件:包括源程序文件(後綴為.c)、目標文件(後綴為.obj)、可執行文件(後綴為.exe)等。這種文件的內容是程序代碼。

(2)數據文件:文件的內容不是程序,而是供程序運行時讀寫的數據,如在程序運行過程中輸出到磁碟(或其他外部設備)的數據,或在程序運行過程中供讀入的數據。如一批學生的成績數據、貨物交易的數據等。

為了簡化用戶對輸入輸出設備的操作,使用戶不必去區分各種輸入輸出設備之間的區別,操作系統把各種設備都統一作為文件來處理。從操作系統的角度看,每一個與主機相連的輸入輸出設備都看作一個文件。例如,終端鍵盤是輸入文件,顯示屏和列印機是輸出文件。

輸入輸出是數據傳送的過程,數據如流水一樣從一處流向另一處,因此常將輸入輸出形象地稱為流(stream),即數據流。流表示了信息從源到目的端的流動。在輸入操作時,數據從文件流向計算機內存,在輸出操作時,數據從計算機流向文件(如列印機、磁碟文件)。

C的數據文件由一連串的字元(或位元組)組成,而不考慮行的界限,兩行數據間不會自動加分隔符,對文件的存取是以字元(位元組)為單位的。輸入輸出數據流的開始和結束僅受程序控制而不受物理符號(如回車換行符)控制,這就增加了處理的靈活性。

㈧ 127、對C語言的文件存取方式的論述中,正確的是文件( )。 A、只能順

正確的是
C、可以是順序存取,也可以是
隨機存取
例如用
fseek()
來定位。

㈨ C語言程序設計,文件的存取與訪問

#include<stdio.h>

#define N 40
struct STUDENT { int no; char name[20],sex[3]; float t1,t2,t3,t4,ave; };
void f1(STUDENT *mclass)
{ int no,n,i;
FILE *fp;
n=0;
while ( n<N )
{ printf("請輸入學生編號(編號為0結束):"); scanf("%d",&no); if ( no<=0 ) break;
mclass[n].no=no;
printf("請輸入編號為%d的學生信息(姓名 性別 成績1 成績2 成績3 成績4): ",no);
scanf("%s%s%f%f%f%f",mclass[n].name,mclass[n].sex,
&mclass[n].t1,&mclass[n].t2,&mclass[n].t3,&mclass[n].t4);
mclass[n].ave=(mclass[n].t1+mclass[n].t2+mclass[n].t3+mclass[n].t4)/4;
n++;
}
if ( n )
{ if ( fp=fopen("d:\student.dat","wb+") )
{ fwrite(&n,sizeof(int),1,fp);
for ( i=0;i<n;i++ ) fwrite(mclass+i,sizeof(struct STUDENT),1,fp);
fclose(fp);
} else printf("無法建立輸出文件。 ");
} else printf("輸出文件沒有建立,因為學生記錄數為0。 ");
}
void f2(STUDENT *mclass)
{ FILE *fp,*tp;
int n,i,j,k,index[N];
if ( fp=fopen("d:\student.dat","rb") )
{ if ( tp=fopen("d:\stusort.dat","wb+") )
{ fread(&n,sizeof(int),1,fp); if ( n>N ) n=N;
for ( i=0;i<n;i++ ) fread(mclass+i,sizeof(STUDENT),1,fp);
for ( i=0;i<n;i++ ) index[i]=i;
for ( i=0;i<n-1;i++ )
for ( j=i+1;j<n;j++ )
if ( mclass[index[i]].ave<mclass[index[j]].ave )
{ k=index[i]; index[i]=index[j]; index[j]=k;
}
fwrite(&n,sizeof(int),1,tp);
for ( i=0;i<n;i++ ) fwrite(mclass+index[i],sizeof(STUDENT),1,tp);
fclose(tp);
} else printf("無法建立輸出數據文件。 ");
fclose(fp);
} else printf("無法打開文件讀取。 ");
}
void main()
{ STUDENT mClass[N];
int n,i;
FILE *fp;
f1(mClass);
f2(mClass);
if ( fp=fopen("d:\student.dat","rb") )
{ fread(&n,sizeof(int),1,fp); if ( n>N ) n=N;
for ( i=0;i<n;i++ )
{ fread(mClass+i,sizeof(STUDENT),1,fp);
printf("%d %-10s %s %.1f %.1f %.1f %.1f %.1f ",
mClass[i].no,mClass[i].name,mClass[i].sex,
mClass[i].t1,mClass[i].t2,mClass[i].t3,mClass[i].t4,mClass[i].ave);
}
fclose(fp);
}
printf("-------------------------------------------------- ");
if ( fp=fopen("d:\stusort.dat","rb") )
{ fread(&n,sizeof(int),1,fp); if ( n>N ) n=N;
for ( i=0;i<n;i++ )
{ fread(mClass+i,sizeof(STUDENT),1,fp);
printf("%d %-10s %s %.1f %.1f %.1f %.1f %.1f ",
mClass[i].no,mClass[i].name,mClass[i].sex,
mClass[i].t1,mClass[i].t2,mClass[i].t3,mClass[i].t4,mClass[i].ave);
}
fclose(fp);
}
}

圖中用了%10s輸出姓名,程序中改成%-10s則姓名左對齊

㈩ 在C語言中,文件的存取是以 什麼為單位

在C語言中,文件存取都是以位元組作為單位的。
C語言支持很多文件輸入輸出函數,比如fread/fwrite,
fscanf/fprintf,
fgets/fputs,
fgetc/fgetc等。
不過其根本都是從文件中逐位元組進行讀取或寫入,然後再做相應的判斷或操作。
所以,文件存取的最基本單位就是文件存儲的最基本單位,位元組。