C語言指標和檔案筆記

2021-07-05 05:59:27 字數 2466 閱讀 9540

指標陣列 int *p[10];

陣列指標 int (*p)[10];

函式指標 int *fun();

指標函式 int (*p)();

指標函式:

int add(int a,int b){}

int max(int a,int b){}

int fun(int (*p)(int ,int),int a,int b)

int (*p)(int ,int);

函式指標:

buf[10];

memset(buf,0,sizeof(buf));將buf中的內容全部設定為0

memcpy(buf2,buf1,sizeof(buf1));將buf1中的全部拷貝到buf2中

memmove(buf2,buf1,sizeof(buf1));將buf1中的全部移動到buf2中

memcpy使用的時候不能有重疊區域,而memmove可以在重疊區域移動。

file *fp=fopen("e:\\program test\\qt\\untitled12_1\\a.txt","w");

fputs(str,fp); //第乙個引數是記憶體位址,第二個引數是檔案指標。

fgets(str,sizeof(str),fp); //第乙個引數是記憶體位址,第二個引數是記憶體塊的大小,第三個引數是檔案的指標。

feof(fp) //判斷乙個檔案是否到達了結尾,到達結尾返回真。若是沒有結尾就一直迴圈。

fclose(fp) //檔案操作結束後一定要記得關閉檔案指標。

r 以唯讀方式開啟檔案,該檔案必須存在。

r+ 以可讀寫方式開啟檔案,該檔案必須存在。

rb+ 讀寫開啟乙個二進位制檔案,允許讀寫資料,檔案必須存在。

rw+ 讀寫開啟乙個文字檔案,允許讀和寫。

w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失,若不存在就會建立檔案。

w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失,若不存在就會建立檔案。

a 用追加的方式開啟檔案,如果檔案不存在,就建立檔案,如果檔案存在,就在原先檔案的基礎上追加寫。

後面加"b"代表以二進位制模式讀寫檔案,不加就是文字模式。

二進位制和文字模式的區別

1、在windows系統中,文字模式下,以"\r\n"代表換行。若以文字模式開啟檔案,並用fputs等函式寫入換行符"\n"的時候,函式自動在"\n"前加"\r"。所以實際寫入檔案的是"\r\n"。

2、在類unix/linux系統中文字模式下,檔案以"\n"代表換行,所以linux系統中在文字模式和二進位制模式下並無區別。

fgetc(fp);//從檔案中一次性讀取乙個字元

while((c=fgetc(fp))!=eof) //迴圈讀取所有字元

fputc(c,fp);//從檔案中一次性寫入乙個字元

fscanf(fp,"%s",buf);

fprintf(fp,"%s",buf);

fread(buf,sizeof(char),10,fp); //第乙個引數是緩衝區,第二個引數是讀取的時候最小單位,第三個引數是讀取的位元組數,第四個引數是讀取檔案的指標。函式有返回值size_t型別返回值,代表讀取了多少記錄數。

fwrite(buf,sizeof(char),2,fp); 

stat函式 

#include//標頭檔案

stat.st_size; //檔案大小,單位:位元組

struct stat st = ;

stat("d:\\temp\\a.wmv",&st);

printf("%u\n",st.st_size); 檔案大小

clock_t c1=clock();

……clock_t c2=clock();

size_t c=c2-c1;

計算出程式所花的時間。

fseek 函式

fseek(fp, sizeof(int), seek_set); //從檔案開始位置向後偏移sizeof(int)位元組

fseek(fp, 0 - sizeof(int), seek_cur); //從檔案當前位置往回偏移sizeof(int)位元組

fseek(fp, 0 - sizeof(int), seek_end); //從檔案結尾往前偏移iszeof(int)位元組

ftell 函式

ftell(fp); //檔案指標的位置

fflush 函式

fflush(fp); //將緩衝區的內容立刻寫入檔案,不用等到緩衝區滿了。如果沒有這個函式,讀寫檔案的時候一般要到達呼叫fclose()函式才一次性寫入硬碟。優勢是,不會因為電腦宕機導致檔案丟失,但是會導致硬碟讀寫增加,降低壽命,程式效率變低。

remove("d:\\temp\\a.txt"); //刪除檔案

rename("d:\\temp\\c.txt","d:\\temp\\b.txt"); //檔案重新命名

file *fp = fopen("a.txt","w"); //如果沒有指定路徑,那麼生成的檔案在當前目錄。

C語言檔案指標和檔案描述符

include int fsync intfd int fdatasync intfd include int fflush file stream 注 fsync引數是檔案描述符,fflush引數是檔案指標 c語言檔案指標域檔案描述符之間可以相互轉換 int fileno file stream ...

C語言檔案指標和檔案描述符相互轉換

記錄一下 檔案指標向檔案描述符轉換的時候用fileno 函式沒問題,然而檔案描述符向檔案指標轉換的時候卻出現問題,大於2以上的值就出錯 用fdopen 函式。結果採用iob func 函式卻可以,暫時記錄一下,後面有時間再 其中的原因。char s hello k7k file fp1 fopen ...

c語言指標筆記

一 表示這是乙個指標變數,表示乙個變數的位址。二 與 的區別 int a p a 此處 p就是先執行 p,即去取p所指位址的值,相當於 p取出變數a,再進行取位址操作,p即取出a的位址,相當於 a.此處 a就是就是先計算 運算,即先取出a的位址,然後進行 運算,取出位址上的值,即變數a。三 一維陣列...