新聞中心
在Linux系統(tǒng)中,進行文件操作是不可避免的事情。在這些文件操作中,文件指針定位是其中一個很重要的操作。fgetpos函數(shù)是一個可以獲取文件指針當前位置并保存的函數(shù),它在Linux的文件操作中起著非常重要的作用。本文將詳細介紹Linux文件操作中的fgetpos函數(shù)。

一、fgetpos函數(shù)的定義和頭文件
fgetpos函數(shù)是C語言標準I/O庫函數(shù)之一,它的定義如下:
“`
int fgetpos(FILE *stream, fpos_t *pos);
“`
其中,F(xiàn)ILE *stream表示文件指針,fpos_t *pos表示當前文件指針位置的保存位置。
在使用fgetpos函數(shù)時需要注意,在進行文件操作時需要添加以下頭文件:
“`
#include
“`
二、 fgetpos函數(shù)的返回值
fgetpos函數(shù)返回int類型的值,主要用來判斷函數(shù)的執(zhí)行結(jié)果。當函數(shù)執(zhí)行成功時,返回0。否則,函數(shù)返回非0值。
三、fgetpos函數(shù)的說明
fgetpos函數(shù)可以保存文件指針的當前位置及相關(guān)的狀態(tài)信息。調(diào)用該函數(shù)后,文件指針的狀態(tài)及其它的狀態(tài)信息都將保存在pos所指向的內(nèi)存中,從而使程序能夠快速、準確地恢復之前的狀態(tài)。同時,在后續(xù)的文件操作中,也可以通過使用fsetpos函數(shù)來設(shè)置文件指針的位置。
fgetpos函數(shù)的返回值是一個整數(shù),用于指示函數(shù)調(diào)用的成功與否。對于該函數(shù)來說,如果函數(shù)調(diào)用成功,返回值為0。在出現(xiàn)錯誤時,該函數(shù)將返回一個非0值(通常是-1)。
四、使用示例
下面是一個使用fgetpos函數(shù)的示例:
“`
#include
int mn(){
FILE *fp = NULL;
fpos_t position;
char sentence[255];
fp = fopen(“file.txt”, “w+”);
fprintf(fp, “This is a testing.”);
fgetpos(fp, &position);
fputs(“sample.dev”, fp);
fsetpos(fp, &position);
fgets(sentence, 100, fp);
printf(“%s\n”, sentence);
fclose(fp);
return 0;
}
“`
代碼中,程序首先打開一個文件,并寫入一段文本。然后,使用fgetpos函數(shù)將文件指針的位置保存在position變量中。接著,程序在文件中添加了新的內(nèi)容“sample.dev”,然后使用fsetpos函數(shù)把文件指針移動到之前保存的位置。程序完成對文件中數(shù)據(jù)的讀取并將其顯示在控制臺上。
五、注意事項
在使用fgetpos函數(shù)時,需要注意的一些事項如下:
1. 該函數(shù)只能在Windows、Linux等UNIX上使用,不能在Macintosh操作系統(tǒng)下使用。
2. 在Linux中,文件指針是以0開始計算的。
3. 在使用fsetpos函數(shù)時,可以保證文件指針在讀操作時的準確性。
4. fgetpos函數(shù)與ftell函數(shù)類似,不同的是,fgetpos函數(shù)可以保存打開文件的狀態(tài),而ftell函數(shù)無法保存。
結(jié)語
相關(guān)問題拓展閱讀:
- 嵌入式Linux上的C語言編程實踐的目錄
嵌入式Linux上的C語言編程實踐的目錄
之一部分 基礎(chǔ)知識
第1章 Linux環(huán)境下C語言的開發(fā) 2
1.1 Linux下的C語言開發(fā)環(huán)境 2
1.2 在Linux中使用C語言開發(fā) 3
1.2.1 開發(fā)流程和開發(fā)工具 3
1.2.2 Linux中程序的運行原理 4
第2章 嵌入式環(huán)境中的C語扒笑言開發(fā) 7
2.1 嵌入式C語言的開發(fā)環(huán)春旁含境 7
2.2 嵌入式開發(fā)中C語言編程要點 9
第二部分 Linux環(huán)境中
C語言的開發(fā)環(huán)境和工具
第3章 Linux的文本編輯工具VI 12
3.1 VI編輯器概述 12
3.1.1 VI簡介 12
3.1.2 VI的工作模式和使用
3.1.2 之前的準備 12
3.1.3 進入和退出VI 13
3.2 VI的增強版VIM 16
3.3 VI編輯器的基本使用方法 17
3.3.1 在屏幕上移動光標 17
3.3.2 插入文本 20
3.3.3 刪除文本 22
3.3.4 修改文本內(nèi)容 25
3.3.5 替換文本內(nèi)容 27
3.3.6 合并文本內(nèi)容 30
3.3.7 移動文本內(nèi)容 30
3.4 VI編輯器的命令和高級操作 32
3.4.1 VI常用命令的列表 32
3.4.2 VI的一些高級的操作和
3.1.2 使用技巧 35
第4章 GCC程序開發(fā)工具 39
4.1 GNU工具綜述 39
4.2 GCC的編譯和連接 43
4.2.1 工程示例 43
4.2.2 編譯、匯編和連接 46
4.2.3 動態(tài)庫 48
4.3 GCC的二進制工具 49
4.3.1 ar(歸檔工具) 49
4.3.2 readelf(讀取ELF格式
3.1.2 文件信息) 51
4.3.3 strings(查看字符串) 54
4.3.4 nm(顯示符號信息) 55
4.3.5 strip(啟舉刪除符號) 57
4.3.6 objdump(顯示目標
3.1.2 文件信息) 58
4.3.7 objcopy(復制目標文件) 63
第5章 make工程管理工具 67
5.1 make和Makefile 67
5.1.1 make機制概述 67
5.1.2 make和Makefile的使用 68
5.2 Makefile使用示例 69
5.2.1 簡單的Makefile 69
5.2.2 Makefile中的依賴關(guān)系 71
5.2.3 Makefile中使用隱含規(guī)則
3.1.2 來編譯程序 73
5.2.4 Makefile中指定依賴關(guān)系的
3.1.2 編譯 76
5.3 自動生成Makefile 78
5.3.1 自動生成Makefile的意義和
3.1.2 相關(guān)工具 78
5.3.2 自動生成Makefile的流程 79
第6章 GDB調(diào)試工具 85
6.1 GDB簡介 85
6.2 使用GDB調(diào)試程序 86
6.2.1 基本操作 88
6.2.2 查看命令 90
6.2.3 高級命令 92
6.2.4 attach命令的使用 94
6.3 遠程GDB調(diào)試 95
6.3.1 本地GDB調(diào)試和遠程GDB
3.1.2 調(diào)試的比較 95
6.3.2 遠程GDB調(diào)試流程 97
6.3.3 遠程GDB調(diào)試示例 98
第三部分 庫函數(shù)
第7章 C語言標準庫函數(shù) 106
7.1 ISO的C語言標準庫函數(shù)
7.1 分類 106
7.2 標準格式化輸入/輸出類函數(shù) 107
7.2.1 scanf函數(shù):格式化輸入
3.1.2 字符串 107
7.2.2 printf函數(shù):格式化輸出
3.1.2 字符串 109
7.2.3 putchar函數(shù):輸出字符到
3.1.2 標準輸出 111
7.2.4 getchar函數(shù):從標準輸入
3.1.2 獲取字符 111
7.2.5 putc函數(shù):向文件輸出字符 112
7.2.6 getc函數(shù):從文件輸入字符 112
7.2.7 gets函數(shù):獲得字符串 112
7.2.8 puts函數(shù):輸出指定字符串 113
7.2.9 ungetc函數(shù):把字符
3.1.2 寫回流中 113
7.3 字符處理類函數(shù) 114
7.4 字符串處理及轉(zhuǎn)換函數(shù) 116
7.4.1 sprintf函數(shù):格式化輸出
3.1.2 字符串到一個緩沖區(qū) 116
7.4.2 strcat和strncat函數(shù):
3.1.2 字符串連接 119
7.4.3 strcpy和strncpy函數(shù):
3.1.2 字符串復制 120
7.4.4 strcmp和strncmp函數(shù):
3.1.2 字符串比較 121
7.4.5 strlen函數(shù):獲取字符串
3.1.2 長度 122
7.4.6 strchr和strrchr函數(shù):字符/
3.1.2 字符串定位 122
7.4.7 strstr函數(shù):字符串查找 123
7.4.8 strrev函數(shù):字符串逆序 124
7.4.9 strupr和strlwr函數(shù):字母
3.1.2 形式轉(zhuǎn)換 125
7.4.10 strdup和strndup函數(shù):
3.1.2 字符串復制 125
7.4.11 memset函數(shù):內(nèi)存設(shè)置 126
7.4.12 memmove函數(shù):內(nèi)存移動 126
7.4.13 memcmp函數(shù):內(nèi)存比較 127
7.4.14 memcpy函數(shù):內(nèi)存復制 128
7.5 數(shù)學計算類函數(shù) 128
7.6 數(shù)據(jù)結(jié)構(gòu)和算法類函數(shù) 133
7.6.1 bsearch函數(shù):二元搜索 133
7.6.2 lfind函數(shù):線性搜索 134
7.6.3 lsearch函數(shù):線性搜索 135
7.6.4 qsort函數(shù):利用快速排序法
3.1.2 排列數(shù)組 136
7.6.5 rand函數(shù):產(chǎn)生隨機數(shù) 136
7.6.6 srand函數(shù):設(shè)置隨機
3.1.2 數(shù)種子 137
7.7 文件I/O操作類相關(guān)函數(shù) 137
7.7.1 fopen函數(shù):打開文件 138
7.7.2 fclose函數(shù):關(guān)閉文件 139
7.7.3 fgetc函數(shù):從文件中讀取
3.1.2 一個字符 139
7.7.4 fputc函數(shù):將一指定字符
3.1.2 寫入文件流中 139
7.7.5 fgets函數(shù):從文件中讀取
3.1.2 一字符串 140
7.7.6 fputs函數(shù):將一指定的
3.1.2 字符串寫入文件內(nèi) 140
7.7.7 rewind函數(shù):重設(shè)文件流的
3.1.2 讀寫位置為文件開頭 141
7.7.8 ftell函數(shù):取得文件流的
3.1.2 讀取位置 141
7.7.9 fseek函數(shù):移動文件流的
3.1.2 讀寫位置 141
7.7.10 fwrite函數(shù):將數(shù)據(jù)寫至
7.7.10 文件流 142
7.7.11 fread函數(shù):從文件流讀取
7.7.10 數(shù)據(jù) 142
7.7.12 remove函數(shù):刪除文件 143
7.7.13 rename函數(shù):更改文件
7.7.10 名稱或位置 143
7.7.14 freopen函數(shù):重新打開
7.7.10 文件 144
7.7.15 fflush函數(shù):同步緩沖區(qū) 144
7.7.16 fgetpos函數(shù):獲得文件
7.7.10 位置 145
7.7.17 fsetpos函數(shù):設(shè)置文件
7.7.10 位置 145
7.7.18 mktemp函數(shù):建立臨時
7.7.10 文件 146
7.7.19 tmpfile函數(shù):臨時文件 146
7.7.20 tmpnam:得到臨時文件名 147
7.8 日期時間類函數(shù) 147
7.8.1 clock函數(shù):獲得CPU時間 148
7.8.2 time函數(shù):獲得當前日歷
7.8.2 時間 148
7.8.3 difftime函數(shù):獲得時間
7.8.2 差值 148
7.8.4 gmtime函數(shù):將日歷時間
7.8.2 轉(zhuǎn)換成UTC時間 149
7.8.5 mktime函數(shù):將UTC時間
7.8.2 轉(zhuǎn)換成日歷時間 149
7.8.6 asctime函數(shù):將UTC時間
7.8.2 轉(zhuǎn)換成字符串 149
7.8.7 ctime函數(shù):將日歷時間轉(zhuǎn)換
7.8.2 成當?shù)貢r間的字符串 150
7.8.8 localtime函數(shù):將日歷時間
7.8.2 轉(zhuǎn)換成本地時間 150
7.8.9 strftime函數(shù):轉(zhuǎn)換日期和
7.8.2 時間格式 151
7.9 國際化和本地化函數(shù) 152
7.9.1 setlocale函數(shù):本地化控制
7.8.2 函數(shù) 153
7.9.2 localeconv函數(shù):本地化
7.8.2 轉(zhuǎn)換 154
7.10 錯誤處理類函數(shù) 155
7.10.1 clearerr函數(shù):清除流中的
7.10.1 結(jié)束指示符和錯誤指示符 155
7.10.2 feof函數(shù):指示文件結(jié)束 155
7.10.3 ferror函數(shù):指示文件出錯 156
7.10.4 perror函數(shù):輸出出錯信息 156
7.10.5 errno函數(shù):錯誤編號記錄 156
7.11 其他一些工具函數(shù) 157
7.11.1 assert函數(shù):程序診斷 157
7.11.2 長跳轉(zhuǎn)函數(shù) 157
7.11.3 可變長的參數(shù)控制函數(shù) 160
7.11.4 獲取結(jié)構(gòu)體成員函數(shù)
7.10.1 (宏) 161
7.12 一些標準庫中有用的宏 161
第8章 Linux中C語言的擴展庫
函數(shù) 163
8.1 文件I/O操作函數(shù) 163
8.1.1 open函數(shù):打開文件 163
8.1.2 close函數(shù):關(guān)閉文件 164
8.1.3 read函數(shù):讀文件 165
8.1.4 write函數(shù):寫文件 165
8.1.5 lseek函數(shù):文件定位 167
8.1.6 ioctl函數(shù):文件控制 167
8.1.7 flock函數(shù):鎖定文件 167
8.1.8 mmap函數(shù)和munmap函數(shù):
8.1.8 內(nèi)存映射 168
8.1.9 create函數(shù):創(chuàng)建新文件 170
8.1.10 dup函數(shù)和dup2函數(shù):
8.1.10 復制文件描述符 171
8.1.11 fcntl函數(shù):改變已打開的
8.1.10 文件的屬性 171
8.2 文件權(quán)限相關(guān)的操作函數(shù) 172
8.2.1 access函數(shù):判斷是否
8.2.1 具有存取文件的權(quán)限 172
8.2.2 chown函數(shù)和fchown函數(shù):
8.2.1 改變文件的所有者 173
8.2.3 chmod函數(shù)和fchmod函數(shù):
8.2.1 改變權(quán)限 173
8.2.4 unlink函數(shù):刪除文件 173
8.2.5 utime函數(shù)和utimes函數(shù):
8.2.1 改變文件時間 174
8.2.6 umask函數(shù):設(shè)置建立
8.2.1 新文件時的權(quán)限掩碼 175
8.2.7 link函數(shù):建立文件連接 175
8.2.8 stat函數(shù)、fstat函數(shù)和lstat
8.2.1 函數(shù):獲取文件信息 175
8.3 用戶組操作函數(shù) 176
8.3.1 getgid函數(shù)和setgid函數(shù):
8.2.1 獲得/設(shè)置組識別碼 176
8.3.2 getegid函數(shù)和setegid函數(shù):
8.2.1 獲得/設(shè)置有效的組識別碼 177
8.3.3 getuid函數(shù)和setuid函數(shù):
8.2.1 獲得/設(shè)置真實的用戶識別碼 177
8.3.4 geteuid函數(shù)和seteuid函數(shù):
8.2.1 獲得/設(shè)置有效的用戶識別碼 178
8.3.5 getgroups函數(shù)和setgroups
8.2.1 函數(shù):獲得/設(shè)置組代碼 178
8.4 信號類函數(shù) 179
8.4.1 kill函數(shù):傳送信號給指定的
8.2.1 進程 181
8.4.2 raise函數(shù):信號發(fā)送函數(shù) 181
8.4.3 alarm函數(shù):設(shè)置超時函數(shù) 182
8.4.4 signal函數(shù):信號安裝函數(shù) 182
8.5 進程處理函數(shù) 183
8.5.1 getpid函數(shù)和getppid函數(shù):
8.2.1 獲得進程ID和父進程ID 183
8.5.2 fork函數(shù):建立子進程 183
8.5.3 sleep函數(shù)和usleep函數(shù):
8.2.1 讓進程暫停執(zhí)行一段時間 185
8.5.4 exec函數(shù)族:找到可執(zhí)行
8.2.1 文件 185
8.5.5 _ exit函數(shù)和_Exit函數(shù):
8.2.1 結(jié)束進程執(zhí)行 188
第四部分 C語言高級編程
第9章 動態(tài)內(nèi)存的堆與棧 190
9.1 程序內(nèi)存區(qū)域的使用 190
9.1.1 靜態(tài)內(nèi)存與動態(tài)內(nèi)存 190
9.1.2 C語言中的動態(tài)內(nèi)存 191
9.2 C程序中??臻g的使用 196
9.2.1 參數(shù)使用??臻g 196
9.2.2 自動變量使用??臻g 199
9.2.3 程序中較大的棧 201
9.2.4 ??臻g的特性 202
9.3 C程序中的堆空間使用 203
9.3.1 分配和釋放堆內(nèi)存的庫函數(shù) 203
9.3.2 庫函數(shù)使用 204
9.3.3 堆內(nèi)存的特性 218
9.4 堆內(nèi)存和棧內(nèi)存使用的比較 222
9.4.1 利用返回值傳遞信息 222
9.4.2 利用參數(shù)傳遞信息 226
9.4.3 堆與棧內(nèi)存管理的區(qū)別 231
第10章 函數(shù)指針的使用 232
10.1 函數(shù)指針的概念 232
10.1.1 C語言函數(shù)的本質(zhì) 232
10.1.2 函數(shù)指針在C語言中的
10.1.2 意義 234
10.2 函數(shù)指針的使用 237
10.2.1 函數(shù)指針使用初步 237
10.2.2 函數(shù)指針的類型定義 240
10.2.3 函數(shù)指針作為結(jié)構(gòu)體成員 242
10.2.4 函數(shù)指針作為函數(shù)的參數(shù) 243
10.2.5 函數(shù)指針作為函數(shù)的
10.2.5 返回值 244
10.2.6 函數(shù)指針數(shù)組 246
10.3 函數(shù)指針使用示例 248
第11章 回調(diào)函數(shù)的使用 252
11.1 回調(diào)函數(shù)的概念與作用 252
11.1.1 程序調(diào)用的方式 252
11.1.2 回調(diào)函數(shù)的作用 254
11.2 回調(diào)函數(shù)的語法 254
11.2.1 簡單的回調(diào)函數(shù) 254
11.2.2 完全形式的回調(diào)函數(shù) 256
11.3 回調(diào)函數(shù)的使用 259
11.3.1 qsort中的回調(diào)函數(shù) 259
11.3.2 atexit和on_exit函數(shù)的
10.2.5 注冊退出函數(shù) 263
第12章 C語言實現(xiàn)對象編程 268
12.1 C語言實現(xiàn)基于對象編程的
12.1 概念與作用 268
12.2 C語言基于對象編程實現(xiàn)
12.1 封裝 269
12.2.1 簡單的程序示例 269
12.2.2 C語言基于對象編程的
10.2.5 詳解 272
12.2.3 C語言基于對象編程與
10.2.5 C++面向?qū)ο缶幊痰膶Ρ?275
12.3 C語言基于對象編程實現(xiàn)
12.3 部分繼承功能 278
12.3.1 利用數(shù)據(jù)結(jié)構(gòu)的包含實現(xiàn)
10.2.5 繼承功能 279
12.3.2 利用私有指針實現(xiàn)繼承
10.2.5 功能 282
12.3.3 C語言實現(xiàn)繼承的總結(jié) 287
12.4 C語言基于對象編程實現(xiàn)
12.4 部分多態(tài)功能 288
12.4.1 利用操作指針組的包含
10.2.5 實現(xiàn)多態(tài)功能 288
12.4.2 C語言實現(xiàn)多態(tài)功能的總結(jié) 292
12.5 對C語言實現(xiàn)基于對象
12.5 編程的思考 292
12.5.1 C語言基于對象編程的
10.2.5 特性 292
12.5.2 C語言基于對象編程中接口、
10.2.5 實現(xiàn)和調(diào)用者的關(guān)系 293
第五部分 在嵌入式
環(huán)境下的C語言編程
第13章 C語言程序的內(nèi)存布局 295
13.1 C語言程序的存儲區(qū)域 295
13.2 C語言程序的段 297
13.2.1 段的分類 297
13.2.2 程序中段的使用 298
13.3 可執(zhí)行程序的連接 301
13.3.1 可執(zhí)行程序的組成 301
13.3.2 各個目標文件的關(guān)系 303
13.3.3 連接錯誤示例 304
13.4 C語言程序的運行 309
13.4.1 RAM調(diào)試運行 311
13.4.2 固化程序的XIP運行 312
13.4.3 固化程序的加載運行 313
13.4.4 C語言程序的運行總結(jié) 315
第14章 嵌入式C語言常用語法 317
14.1 內(nèi)存指針操作 317
14.1.1 內(nèi)存操作的意義 317
14.1.2 使用指針操作內(nèi)存 319
14.1.3 volatile的使用 324
14.1.4 嵌入式系統(tǒng)指針的實際
10.2.5 應用 325
14.2 位操作 327
14.2.1 位操作的意義 327
14.2.2 位操作的語法 328
14.3 大小端與對齊問題 330
14.3.1 大小端問題 331
14.3.2 內(nèi)存對齊問題 335
14.3.3 結(jié)構(gòu)體成員的對齊問題 338
14.4 程序的跳轉(zhuǎn) 344
14.4.1 嵌入式系統(tǒng)程序跳轉(zhuǎn)的
10.2.5 類型 344
14.4.2 C語言中實現(xiàn)程序的跳轉(zhuǎn) 345
第15章 嵌入式C語言編程的技巧 348
15.1 程序的優(yōu)化技巧 348
15.1.1 循環(huán)緩沖區(qū) 348
15.1.2 查表法 350
15.1.3 針對循環(huán)執(zhí)行效率的
10.2.5 優(yōu)化 353
15.2 關(guān)于小數(shù)運算 355
15.3 函數(shù)參數(shù)和返回值的傳遞 357
15.4 變量的初始化技巧 360
15.4.1 數(shù)組的初始化 360
15.4.2 結(jié)構(gòu)體的初始化 362
15.4.3 變量的初始化總結(jié) 362
15.5 程序的調(diào)試和宏使用的技巧 363
15.5.1 打印文件、函數(shù)和程序行 363
15.5.2 #:字符串化操作符 364
15.5.3 ##:連接操作符 366
15.5.4 調(diào)試宏的之一種定義方式 367
15.5.5 調(diào)試宏的第二種定義方式 368
15.5.6 對調(diào)試語句進行分級審查 369
15.5.7 條件編譯調(diào)試語句 370
15.5.8 使用do…while的宏定義 372
15.6 代碼剖析 373
參考文獻 378
linux fgetpos的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux fgetpos,Linux文件操作:fgetpos函數(shù)詳解,嵌入式Linux上的C語言編程實踐的目錄的信息別忘了在本站進行查找喔。
成都服務器托管選創(chuàng)新互聯(lián),先上架開通再付費。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)-網(wǎng)站建設(shè),軟件開發(fā)老牌服務商!微信小程序開發(fā),APP開發(fā),網(wǎng)站制作,網(wǎng)站營銷推廣服務眾多企業(yè)。電話:028-86922220
網(wǎng)頁名稱:Linux文件操作:fgetpos函數(shù)詳解 (linux fgetpos)
網(wǎng)址分享:http://www.dlmjj.cn/article/ccsdeho.html


咨詢
建站咨詢
