c語言fseek函數(shù)定義 c語言函數(shù)f

C語言大文件操作疑問(fseek)

是有這個限制的。

我們提供的服務有:網(wǎng)站設計、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、黃埔ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的黃埔網(wǎng)站制作公司

如果使用的標準的c函數(shù)的。

如果是你是32操作系統(tǒng),c語言操作文件的大小是 2^31 ,2G

如果是你是64操作系統(tǒng),c語言操作文件的大小是.2^63 ,8589934592 G

你說的問題肯定,出在32位操作系統(tǒng)上。

一是:

操作系統(tǒng)能不能允許創(chuàng)建2G以上的文件了,具體要看操作系統(tǒng)了。

如果不允許,你的問題就沒什么意義了!

如果操作系統(tǒng)允許的話,都會提供,系統(tǒng)函數(shù)讓你調用的。

你得自己去找資料了。

===============

你可以看一下,sqlite的源代碼,我的3-5-4版本

他不用是用c語言標準庫的。函數(shù),能windows提供的系統(tǒng)函數(shù)SetFilePointer,ReadFile

static int winRead(

sqlite3_file *id, /* File to read from */

void *pBuf, /* Write content into this buffer */

int amt, /* Number of bytes to read */

sqlite3_int64 offset /* Begin reading at this offset */

){

LONG upperBits = (offset32) 0x7fffffff;

LONG lowerBits = offset 0xffffffff;

DWORD rc;

DWORD got;

winFile *pFile = (winFile*)id;

assert( id!=0 );

SimulateIOError(return SQLITE_IOERR_READ);

OSTRACE3("READ %d lock=%d\n", pFile-h, pFile-locktype);

rc = SetFilePointer(pFile-h, lowerBits, upperBits, FILE_BEGIN);

if( rc==INVALID_SET_FILE_POINTER GetLastError()!=NO_ERROR ){

return SQLITE_FULL;

}

if( !ReadFile(pFile-h, pBuf, amt, got, 0) ){

return SQLITE_IOERR_READ;

}

if( got==(DWORD)amt ){

return SQLITE_OK;

}else{

memset(((char*)pBuf)[got], 0, amt-got);

return SQLITE_IOERR_SHORT_READ;

}

}

關于C語言的fseek()函數(shù)中的起始位置當前位置如何理解?

這個問題要從FILE結構體的數(shù)據(jù)項組成講起: struct _iobuf { char *_ptr; //文件輸入的下一個位置 int _cnt; //當前緩沖區(qū)的相對位置 char *_base; //指基礎位置(即是文件的起始位置) int _flag; //文件標志 int _file; //文件的有效性驗證 int _charbuf; //檢查緩沖區(qū)狀況,如果無緩沖區(qū)則不讀取 int _bufsiz; //文件的大小 char *_tmpfname; //臨時文件名 } FILE; (注:這是vc++6.0對FILE的定義) 在用fopen()函數(shù)打開文件后系統(tǒng)將自動建立一個數(shù)據(jù)塊存放上述信息。 其中“char *_base; ” 指向文件頭在緩沖區(qū)的位置(即fseek()函數(shù)第三形參origin的SEEK_SET常量) “char *_ptr;” 減一即文件指針的當前位置(即fseek()函數(shù)第三形參origin的SEEK_CUR常量) 函數(shù)原型:int fseek( FILE *stream, long offset, int origin ) 中offset參數(shù)是個相對變量,它是相對于origin而言的。比如 int fseek( fp,100L,SEEK_SET ); 就是以文件頭為基準向后移動100個字節(jié)。原理就是對內存中的FILE結構體中的元素作如下操作 FILE._ptr=FILE._base+100; int fseek( fp,100L,SEEK_CUR ); 就是以文件的當前位置為基準向后移動100個字節(jié),相應的:FILE._ptr+=100; 其他的就不多講了.明白了嗎?

在c語言中,fseek(fp,sizeof(int)*3,0)是什么意思

int fseek(FILE *stream, long offset, int fromwhere);函數(shù)設置文件指針stream的位置。

如果執(zhí)行成功,stream將指向以fromwhere為基準,偏移offset(指針偏移量)個字節(jié)的位置,函數(shù)返回0。如果執(zhí)行失敗(比如offset超過文件自身大小),則不改變stream指向的位置,函數(shù)返回一個非0值。

函數(shù)設置文件指針stream的位置。如果執(zhí)行成功,stream將指向以fromwhere(偏移起始位置:文件頭0(SEEK_SET),當前位置1(SEEK_CUR),文件尾2(SEEK_END))為基準,偏移offset(指針偏移量)個字節(jié)的位置。如果執(zhí)行失敗(比如offset超過文件自身大小),則不改變stream指向的位置。

fseek函數(shù)和lseek函數(shù)類似,但lseek返回的是一個off_t數(shù)值,而fseek返回的是一個整型。

所以,fseek(fp,sizeof(int)*3,0)函數(shù)將文件指針指向從文件開頭,向后偏移3個int單元的地方。

C語言 fseek(fp,offset,SEEK_SET)什么意思

首先得保證文件已經打開,不然會報錯。

fseek是一種函數(shù)

fp :指針

offset:偏移量

seek_set:文件開頭

總體意思,將指針移到文件開頭,偏移量為“2”(自己設置多少,正后,負前,我設置的意思是移動到后2個字節(jié)處)

當前標題:c語言fseek函數(shù)定義 c語言函數(shù)f
URL鏈接:http://m.kartarina.com/article40/dogieeo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設定制網(wǎng)站服務器托管品牌網(wǎng)站設計云服務器微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設
主站蜘蛛池模板: 亚洲午夜AV无码专区在线播放| 日韩AV无码精品人妻系列| 影音先锋中文无码一区| 亚洲乱亚洲乱妇无码| 国产V亚洲V天堂A无码| 免费无码一区二区| 男男AV纯肉无码免费播放无码| 日韩欧精品无码视频无删节| 国产AV无码专区亚洲Av| 亚洲中文无码av永久| 无码国产精品一区二区免费vr| 99久无码中文字幕一本久道| 国产精品无码久久综合网| 国产日韩精品中文字无码| 久久精品aⅴ无码中文字字幕| 国产日韩AV免费无码一区二区| 国产成人无码A区在线观看视频| 无码毛片一区二区三区中文字幕 | 亚洲精品无码av人在线观看| 亚洲爆乳精品无码一区二区| 一本色道无码道DVD在线观看 | 麻豆精品无码国产在线果冻| 亚洲AV无码专区亚洲AV伊甸园| 日韩人妻无码精品无码中文字幕| 久久亚洲AV成人无码| 国产无遮挡无码视频免费软件| 精品久久久久久无码免费| 免费无遮挡无码永久在线观看视频| 久久久久无码精品国产app| 亚洲毛片无码专区亚洲乱| 国产成人无码综合亚洲日韩| 亚洲精品无码乱码成人| 中文无码人妻有码人妻中文字幕| 国产精品无码av在线播放| 五月丁香六月综合缴清无码| 国产成人无码精品久久久露脸| 国产成人无码A区在线观看导航| 久久久久久亚洲av无码蜜芽| 无码熟妇人妻在线视频| 精品乱码一区内射人妻无码 | 亚洲国产成人精品无码区在线观看 |