c语言fgetpos的参数,C语言fgetpos()函数:获得当前文件的读写指针(转)
頭文件:#include
fgetpos()函數獲得當前文件的指針所指的位置,并把該指針所指的位置信息存放到pos所指的對象中。pos以內部格式存儲,僅由fgetpos()和fsetpos()使用。fsetpos()的功能與fgetpos()相反,用來設置當前文件的指針。fgetpos()的原型為:
int fgetpos( FILE *fp, fpos_t *pos );
【參數】fp為當前文件流的指針,pos為指向fpos_t類型的指針。
fpos_t是用來表示文件讀寫指針位置的類型,用來指明正在操作的文件中讀或寫的位置,文件頭處為0。fpos_t在不同的平臺下有不同的類型。
在windows下,fpos_t是一個64位整數,可以直接賦值,如fpos_t = 12。
在linux下,fpos_t是一個結構體,定義為:
typedef struct
{
__off_t __pos; // 雙下劃線
__mbstate_t __state;
}fpos_t;
fpos_t.__pos才是指向當前位置的整數,可以進行賦值,如 fpos_t.__pos = 12。
【返回值】成功返回0,失敗返回非0,并設置errno。
【實例】window上應用fgetpos函數取得當前文件的指針所指的位置。
#include
#include
int main(void)
{
FILE *fp;
char string[] = "This is a test";
fpos_t pos;
// 以讀寫方式打開一個名為test.txt的文件
fp = fopen("test.txt", "w+");
//\將字符串寫入文件
fwrite(string, strlen(string), 1, fp);
// 取得指針位置并存入&pos所指向的對象
fgetpos(fp, &pos);
printf("The file pointer is at byte %ld\n", pos);
// 重設文件指針的位置
fseek(fp,3,0);
// 再次取得指針位置并存入&pos所指向的對象
fgetpos(fp, &pos);
printf("The file pointer is at byte %ld\n", pos);
fclose(fp);
return 0;
}
運行結果:
The file pointer is at byte 14
The file pointer is at byte 3
首先,程序以讀寫方式打開一個名為test.txt的文件,并把字符串"This is a test"寫入文件。注意:字符串共14個字節,地址為0~13。用fwrite函數寫入后,文件指針自動指向文件最后一個字節的下一個位置。即這時的fp的值應該是14。
再用fgetpos函數取得指針位置并存入&pos所指向的對象,此時, pos中的內容為14。然后在屏幕上顯示出The file pointer is at byte 14。
再用fseek函數重設文件指針的位置,讓fp的值為3,即指向文件中第4個字節。
再次取得指針位置并存入&pos所指向的對象。然后在屏幕上顯示出The file pointer is at byte 3。
注意:在linux下,不能這樣定義pos:
fpos_t? *? pos;
fgetpos(fp,pos);
必須這樣定義:
fpos_t? pos;
fgetpos(fp,&pos);
因為pos必須是一個分配好內存空間的參數。第一種方式僅僅是定義了一個指針,并沒有分配空間。如果改為下面的定義方式,則可以編譯通過:
fpos_t? *? pos;
pos = (fpos_t)malloc(12);
fgetpos(fp,pos);
C語言lseek()函數:移動文件的讀寫位置
相關函數:dup, open, fseek 頭文件:#include ? ?#include 定義函數:off_t lseek ...
C語言開發函數庫時利用不透明指針對外隱藏結構體細節
1 模塊化設計要求庫接口隱藏實現細節 作為一個函數庫來說,盡力降低和其調用方的耦合.是最主要的設計標準. C語言,作為經典"程序=數據結構+算法"的踐行者,在實現函數庫的時候,必定 ...
C語言open()函數:打開文件函數(轉)
相關函數:read, write, fcntl, close, link, stat, umask, unlink, fopen 頭文件:#include ? ...
C語言stat()函數:獲取文件狀態
相關函數:fstat, lstat, chmod, chown, readlink, utime 頭文件:#include ?#include
linux c語言 select函數用法
linux c語言 select函數用法 表頭文件 #i nclude #i nclude #i nclude
python3文件的讀寫操作
open函數:對文件進行讀寫操作前,先打開文件,獲取文件的句柄: open(file, mode,?encoding, buffering) 參數說明 file_name:一個包含了你要訪問的文件路徑 ...
【C語言入門教程】5.6 函數庫和文件
函數庫是為代碼復用建立的,將同一類型,需要在不同的程序里使用的函數放置在一起,就組成了一個函數庫.如 C 語言的標準庫,它集合了開發者常用的函數.開發者自行編寫的函數也可以組成函數庫,通常稱之為自定義 ...
C語言文件的讀寫
對文件的讀和寫是最常用的文件操作.在C語言中提供了多種文件讀寫的函數: 字符讀寫函數? :fgetc和fputc 字符串讀寫函數:fgets和fputs 數據塊讀寫函數:freed和fwrite 格式 ...
C語言printf()函數:格式化輸出函數
C語言printf()函數:格式化輸出函數 頭文件:#include printf()函數是最常用的格式化輸出函數,其原型為: ? ? int printf( char ...
隨機推薦
geotrellis使用(十)緩沖區分析以及多種類型要素柵格化
目錄 前言 緩沖區分析 多種類型要素柵格化 總結 參考鏈接 一.前言 ? ? ? ?上兩篇文章介紹了如何使用Geotrellis進行矢量數據柵格化以及柵格渲染,本文主要介紹柵格化過程中常用到的緩沖區分 ...
HDU2845 DP
Beans Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
案例分析:java中substring引發的Full gc
問題定位 由于應用頻繁地Full gc,就dump了內存下來用MAT分析,發現有個map占用了98%的內存,于是找到這個map private ConcurrentMap
luoguP4072 [SDOI2016]征途
[SDOI2016]征途 大體 大概就是推推公式,發現很傻逼的\(n^3\)DP get60 進一步我們發現狀態不能入手,考慮優化轉移 套個斜率優化板子 每一層轉移來一次斜率優化 思路 先便便式子 \ ...
C/S通信模型與B/S通信模型介紹
1.客戶端與服務器之間的通信模型 基于Socket連接的客戶端與服務器之間的通信模型圖如上圖所示,整個通信過程如下所示: (1) 服務器端首先啟動監聽程序,對指定的端口進行監聽,等待接收客戶端的連接請 ...
ashx、aspx、ASP.NET MVC
ashx:ProcessRequest(IHandler的方法)aspx:Page_Load(Page繼承IHttpHandler)(RouteHandler)(HttpHandler)(MvcHan ...
SlidingMenu官方實例分析4——AttachExample
AttachExample這個類沒有繼承BaseActivity,而是FragmentActivity,寫到這好像感悟到了 為什么官方現在都推薦使用Fragment而不是Activity,因為Frag ...
SP16549 QTREE6 - Query on a tree VI LCT維護顏色聯通塊
\(\color{#0066ff}{ 題目描述 }\) 給你一棵n個點的樹,編號1~n.每個點可以是黑色,可以是白色.初始時所有點都是黑色.下面有兩種操作請你操作給我們看: 0 u:詢問有多少個節點v ...
ubuntu修改字體大小
字體大小可以整體修改 System Settings -> Displays -> Scale for menu and title bars
SubSonic框架使用圖解
簡介:SubSonic框架是一個優秀的.開源的ORM映射框架,同時提供符合自身需要的代碼生成器. 官方下載地址:http://subsonicproject.com/Download 明白了SubSo ...
總結
以上是生活随笔為你收集整理的c语言fgetpos的参数,C语言fgetpos()函数:获得当前文件的读写指针(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言static. volatile,
- 下一篇: c 多语言切换dll,【图片】老C教学之