C語言rewind()函式:將檔案指標重新指向檔案開頭
標頭檔案:#include <stdio.h>
rewind()函式用於將檔案指標重新指向檔案的開頭,同時清除和檔案流相關的錯誤和eof標記,相當於呼叫fseek(stream, 0, SEEK_SET),其原型如下:
void rewind(FILE * stream);
【引數】stream為以開啟檔案的指標。
注意:準確的說,這裡的指標不是檔案指標stream,而是檔案內部的位置指標,隨著對檔案的讀寫檔案的位置指標(指向當前讀寫位元組)向後移動。而檔案指標是指向整個檔案,如果不重新賦值檔案指標不會改變。
檔案指標FILE *stream中,包含一個讀寫位置指標char *_nextc,它指向下一次檔案讀寫的位置。其結構如下:
每當進行一次讀寫後,該指標自動指向下一次讀寫的位置。當檔案剛開啟或建立時,該指標指向檔案的開始位置。可以用函式ftell()獲得當前的位置指標,也可以用rewind()/fseek()函式改變位置指標,使其指向需要讀寫的位置。
【例項】讀取檔案的資料後再回到開頭重新讀取。
執行結果:
8
13
22
24
a_string
程式先建立一個檔案寫入一些資料,然後使用feeek函式定位檔案指標到檔案開頭逐個讀取資料,讀取完畢後使用rewind函式將檔案的讀/寫指標重新定位到檔案的開頭,再次讀取時發現讀取的是開頭的字元a_string。
又如,把一個檔案的內容顯示在螢幕上,並同時複製到另一個檔案。
rewind()函式用於將檔案指標重新指向檔案的開頭,同時清除和檔案流相關的錯誤和eof標記,相當於呼叫fseek(stream, 0, SEEK_SET),其原型如下:
void rewind(FILE * stream);
【引數】stream為以開啟檔案的指標。
注意:準確的說,這裡的指標不是檔案指標stream,而是檔案內部的位置指標,隨著對檔案的讀寫檔案的位置指標(指向當前讀寫位元組)向後移動。而檔案指標是指向整個檔案,如果不重新賦值檔案指標不會改變。
檔案指標FILE *stream中,包含一個讀寫位置指標char *_nextc,它指向下一次檔案讀寫的位置。其結構如下:
- typedef struct
- {
- int _fd; // 檔案號
- int _cleft; // 緩衝區中剩下的位元組數
- int _mode; // 檔案操作模式
- char * _nextc; // 下一個位元組的位置
- char * _buff; // 檔案緩衝區位置
- }FILE;
【例項】讀取檔案的資料後再回到開頭重新讀取。
- #include<iostream.h>
- #include<stdio.h>
- void main(void)
- {
- FILE* stream;
- long l;
- float fp;
- char s[81];
- char c;
- stream = fopen("fscanf.txt","w+");
- if(stream == NULL)/*開啟檔案失敗*/
- {
- printf("the file is opeaned error!\n");
- }
- else/*成功則輸出資訊*/
- {
- fprintf(stream,"%s %ld %f %c","a_string",6500,3.1415,'x');
- fseek(stream,0L,SEEK_SET); /*定位檔案讀寫指標*/
- fscanf(stream,"%s",s);
- printf("%ld\n",ftell(stream));
- fscanf(stream,"%ld",&l);
- printf("%ld\n",ftell(stream));
- fscanf(stream,"%f",&fp);
- printf("%ld\n",ftell(stream));
- fscanf(stream," %c",&c);
- printf("%ld\n",ftell(stream));
- rewind(stream);/*指向檔案開頭*/
- fscanf(stream,"%s",s);
- printf("%s\n",s);
- fclose(stream);/*關閉流*/
- }
- }
8
13
22
24
a_string
程式先建立一個檔案寫入一些資料,然後使用feeek函式定位檔案指標到檔案開頭逐個讀取資料,讀取完畢後使用rewind函式將檔案的讀/寫指標重新定位到檔案的開頭,再次讀取時發現讀取的是開頭的字元a_string。
又如,把一個檔案的內容顯示在螢幕上,並同時複製到另一個檔案。
- #include "stdio.h"
- void main()
- {
- FILE *fp1, *fp2;
- fp1 = fopen("file1.c", "r"); // 原始檔
- fp2 = fopen("file2.c", "w"); // 複製到file2.c
- while(!feof(fp1)) putchar(fgetc(fp1)); // 顯示到螢幕上
- rewind(fp1); // fp回到開始位置
- while(!feof(fp1)) fputc(fgetc(fp1), fp2);
- fclose(fp1);
- fclose(fp2);
- }
相關文章
- C語言fopen()函式:開啟一個檔案並返回檔案指標C語言函式指標
- C語言 - 標頭檔案包含C語言
- C語言putc()函式:寫檔案函式(將一指定字元寫入檔案中)C語言函式字元
- 巨集_變數_函式_指標_標頭檔案變數函式指標
- C語言fputc()函式:寫檔案函式(將一指定字元寫入檔案流中)C語言函式字元
- C語言標頭檔案#include的作用C語言
- C語言rename()函式:重新命名檔案或目錄C語言函式
- C語言基礎及指標⑧檔案IOC語言指標
- C語言標頭檔案的使用(轉載)C語言
- C語言關於標頭檔案的使用C語言
- C語言 函式指標C語言函式指標
- Nt函式原型標頭檔案函式原型
- C語言標頭檔案到底是什麼?C語言
- C 語言標頭檔案作用的簡單理解
- C語言之_雙重指標、多檔案、include、檔案C語言指標
- C++ 字元處理函式(cctype標頭檔案)C++字元函式
- C 標頭檔案
- C語言unlink()函式:刪除檔案C語言函式
- C語言lstat()函式:由檔案描述詞取得檔案狀態C語言函式
- C語言fstat()函式:由檔案描述詞取得檔案狀態C語言函式
- C 語言專案中標頭檔案包含的最佳實踐
- C/C++——指向函式的指標和指向函式的指標的陣列C++函式指標陣列
- C語言標頭檔案組織與包含原則C語言
- C 語言的標頭檔案是必須的嗎
- C 語言的變數作用域及標頭檔案變數
- C語言標頭檔案#include的作用是什麼?C語言
- C++標頭檔案<algorithm>中常用函式簡介C++Go函式
- C語言fgetc()函式:讀檔案函式(由檔案中讀取一個字元)C語言函式字元
- C語言ftell()函式:獲取檔案讀寫指標的當前位置C語言函式指標
- C語言link()函式:建立檔案連線C語言函式
- C++ 字串 cctype 標頭檔案標準庫處理函式C++字串函式
- C 標頭檔案 作用
- algorithm標頭檔案下的常用函式Go函式
- C語言函式指標基礎C語言函式指標
- C語言remove()函式:刪除檔案或目錄C語言REM函式
- C語言fchmod()函式:修改檔案的許可權C語言函式
- C語言chown()函式:改變檔案所有者C語言函式
- 指向函式的指標函式指標