c語言fseek函數(shù)的用法 什么意思C語言fseek(fp?
什么意思C語言fseek(fp?C語言中ftell函數(shù)的作用是什么?函數(shù)ftell()用于獲取文件指針當(dāng)前位置相對于文件開頭的偏移字節(jié)數(shù)。當(dāng)文件被隨機(jī)訪問時,由于文件位置的頻繁前后移動,程序很難確定文
什么意思C語言fseek(fp?
C語言中ftell函數(shù)的作用是什么?
函數(shù)ftell()用于獲取文件指針當(dāng)前位置相對于文件開頭的偏移字節(jié)數(shù)。當(dāng)文件被隨機(jī)訪問時,由于文件位置的頻繁前后移動,程序很難確定文件的當(dāng)前位置。通過調(diào)用函數(shù)ftell()可以很容易地確定文件的當(dāng)前位置。使用函數(shù)fTell()還可以很容易地知道文件的長度。例如下面的語句序列:fseek(FP,0l,seek)uend)LEN=ftell(FP)首先將文件的當(dāng)前位置移動到文件的末尾,然后調(diào)用函數(shù)ftell(),得到當(dāng)前位置相對于文件頭的位移,它等于文件指針的位置,文件中包含的字節(jié)數(shù)
在c語言中,fseek(fp,sizeof(int)*3,0)是什么意思?
int fseek(文件*流、長偏移量和*流)被設(shè)置。如果執(zhí)行成功,流將基于fromwhere指向偏移量(指針偏移量)字節(jié)位置,函數(shù)將返回0。如果執(zhí)行失?。ɡ?,偏移量超過文件本身的大小),則流的位置不會更改,并且函數(shù)返回一個非零值。函數(shù)設(shè)置文件指針流的位置。如果執(zhí)行成功,流將指向文件頭0(seek)和偏移位置(Set)、當(dāng)前位置1(seek)ucur、文件尾2(seek)uend)作為參考,偏移偏移位置(指針偏移)字節(jié)。如果執(zhí)行失?。ɡ?,偏移量超過文件本身的大?。?,則流的位置不會更改。fseek函數(shù)與lseek函數(shù)類似,但lseek返回offT,fseek返回整數(shù)。因此,fseek(FP,sizeof(int)*3,0)函數(shù)將文件指針指向文件的開頭,并將其向后偏移三個int單位。
既然C語言函數(shù)的局部變量會被釋放,那為什么函數(shù)還可以把它return返回呢?
看了下面兄弟的回信,我們只能說他們一半是對的。
真正的原因是abi(應(yīng)用程序二進(jìn)制接口)。
ABI定義了與系統(tǒng)交互的細(xì)節(jié),如數(shù)據(jù)類型、大小和對齊方式;調(diào)用約定(控制函數(shù)的參數(shù)傳遞方向、可變長度處理、堆棧清理體以及如何接受返回值等);系統(tǒng)調(diào)用的編碼以及應(yīng)用程序如何對操作系統(tǒng)進(jìn)行系統(tǒng)調(diào)用系統(tǒng);以及采用完整ABI操作系統(tǒng)基本格式、程序庫等的第二代對象文件。完整的ABI,如英特爾二進(jìn)制兼容標(biāo)準(zhǔn)(IBCs),允許支持它的操作系統(tǒng)上的程序在支持此ABI的其他操作系統(tǒng)上運(yùn)行,而無需修改。
其他ABI標(biāo)準(zhǔn)化細(xì)節(jié)包括C名稱修改和同一平臺上編譯器之間的調(diào)用約定,但不包括跨平臺兼容性。
至于下面兄弟提到的eax save返回值,這只是X86的ABI規(guī)范。在其他CPU架構(gòu)平臺(如PowerPC)中,實(shí)現(xiàn)是不同的!--在PowerPC中,返回值存儲在R3寄存器中
!當(dāng)數(shù)據(jù)讀取成功時,返回值將移動。在C語言中,可以移動文件指針的函數(shù)包括:1讀取函數(shù):freed、fgetc、fgets、fscanf等,當(dāng)執(zhí)行讀取操作時,指針向后移動,距離是實(shí)際讀取的字節(jié)數(shù)。寫入函數(shù):fwrite、fputc、fputs、fprintf等。執(zhí)行寫入操作時,指針按實(shí)際寫入的字節(jié)數(shù)向后移動。指針移動功能:fseek、rewind等。根據(jù)功能,可自由移動文件指針。Fscanf在成功讀取數(shù)據(jù)時(即返回值>0時)移動文件指針。如果返回值<=0,則表示讀取操作失敗,指針不會移動。