C語言檔案指標,C語言中通過檔案指標訪問檔案有什麼好處?

2022-03-11 11:11:10 字數 4702 閱讀 4180

1樓:

你還沒解決嗎?

你的bug應該不是檔案方式的問題。

我才起來給你除錯,應該是

這一句的問題

fp1是檔案指標,fopen_s函式返回的值型別是errno_t 也就是int型別的值,

因fp1錯誤的使用,而接受了fopen_s函式的返回值,

此時fp1指標的值變成0x0000000d(fopen_s函式的返回值),

此時檔案指標fp1指向系統保留地址0x0000000d。

因是系統保留地址,feof去讀了系統的地址固報錯

你把這一句

改成

改成

就沒問題了

2樓:匿名使用者

你是要讀檔案,不是寫檔案,應該改成:

二進位制讀方式開啟檔案!!

c語言中怎樣定義檔案指標?

3樓:白殘

標頭檔案後面寫一個#define file_path "d:/t.txt"//引號裡面是指向的檔案路徑

4樓:匿名使用者

file *fp 這就是檔案指標定義方式啊 還問 檔案指標怎麼定義?

你是想知道file是什麼吧?

它是一個結構體:

struct _iobuf ;

typedef struct _iobuf file;

c語言中通過檔案指標訪問檔案有什麼好處?

5樓:匿名使用者

是直接操作到檔案地址,名字什麼的都是表面,不重要的東西。名字可以重複,也很有可能重複,但是地址一般不會。相當於唯一識別符號。

6樓:零點

用指標可以直接訪問記憶體,這就是重要的一點。另外有一些必須用指標才能訪問,比如說在椎中建立物件之類的。因為是虛的,所以只能用指標來訪問。

指標功能很強大,不過不熟悉儘量不要用指標,因為很容易破壞資料。指標能實現的一般引用也可以實現,而且會更簡單。

c語言檔案型別指標

7樓:匿名使用者

c語言檔案型別指標是通過file *fp; 這種形式進行定義的。

關於file結構在vc6中有如下定義:

#ifndef _file_defined

struct _iobuf ;

typedef struct _iobuf file;

#define _file_defined

#endif

c程式用不同的file結構管理每個檔案。程式設計師可以使用檔案,但是不需要知道file結構的細節。實際上,file結構是間接地作業系統的檔案控制塊(fcb)來實現對檔案的操作的,如下圖:

上面圖中的_file實際上是一個描述符,作為進入開啟檔案表索引的整數。

檔案是存放在物理磁碟上的,包括檔案控制塊(fcb)和資料塊。檔案控制塊通常包括檔案許可權、日期(建立、讀取、修改)、擁有者、檔案大小、資料塊資訊。資料塊用來儲存實際的內容。

當開啟一個檔案時,程式會將物理磁碟上的檔案資料塊讀入到記憶體,然後通過檔案指標的移動讀取記憶體中的檔案資料。

file *fopen( char *file, char *open_mode ); //開啟檔案,讀檔案到記憶體,返回檔案資訊結構指標

int fread( char s, int size, int num, file *fp ); //按位元組讀取檔案內容到s中

int fwrite( char s, int size, int num, file *fp ); //按位元組將s地址中的資料寫到檔案中

char *fgets( char *s, int max_size, file *fp); //讀一行資料到緩衝區s中

int fseek( file *fp, long offset, int whence); //移動檔案指標到指定位置

void rewind(file *fp); //回到檔案頭

long ftell(file *fp); //得到當前檔案偏移位置

fclose(fp); //關閉檔案,重新整理快取到物理磁碟上

8樓:金色潛鳥

file 型別是一個結構,檔案開啟成功時,對它作了記憶體分配和初始化。檔案讀寫和檔案操作有許多程式,除資料讀寫和轉換外還有許多操作,讀寫和操作既用到file結構裡的內容,同時也修改和更新與檔案有關的資訊。例如fseek,ftell,fgetpos,fsetpos,rewind,這些雖不是讀寫,但它們操作檔案。

檔案指標是file的一個成員。

9樓:

你想的是對的 就是那樣

c語言檔案指標的幾個問題

10樓:暢其姚依美

就在中定義的.

屬於全域性的變數,生存期位從該檔案處開始,知道檔案結尾處結束.

記憶體中一般使用4個位元組儲存在靜態儲存區.

11樓:

用多個指標開啟同一個檔案是可以做到的。因為開啟檔案的指標並不直接指向檔案而是指向被開啟的檔案的資訊結構體,用n個指標開啟同一個檔案實際上是建立了n個這個檔案的資訊結構體。

要在上一個檔案指標的基礎上用另一個檔案指標繼續讀取資料,只要寫一句fq=fp;即可,其中fp和fq都成功讀開啟同一個檔案的指標,且先用fp讀檔案接著用fq繼續讀取後續資料。

//#include "stdafx.h"//if the vc++6.0, with this line.

#include "stdio.h"

int main(void)

設當前目錄下的1234.txt檔案內容是1234567890,則輸出是:

1 1注:用多個指標開啟同一檔案肯定有很多弊端,會造成檔案操作的混亂情況。特別是一個指標關閉了檔案後,另外的指標就可能讀不出資料來了。

所以以上**只證明「可以」,並不認同這種做法。

12樓:

file *fin, *f2, *f3;

用1個檔案指標(pointer) fin開啟一個檔案,再把它賦值給別的指標,f2,f3...你就擁有幾個檔案指標了.

在上一個檔案指標的位置繼續讀取--接著讀就可以了,讀(寫)位置就在剛讀完的位置.

檔案讀寫指標(indicator)的當前位置可以用ftell取得.

long ftell( file *stream ); 並存放起來.

想把檔案讀寫指標(indicator)的位置,設定到存放起來的位置值.可以用fsetpos

int fsetpos( file *stream, const fpos_t *pos );

13樓:

1,沒有必要用幾個檔案指標開啟同一個檔案,不要在一個開啟了沒有關閉的情況下再次開啟。

2.c語言中可以用fseek來定位檔案指標的位置fseek(fp,offset,seek_set);

fseek(fp,offset,seek_cur);

fseek(fp,offset,seek_end);

fp為開啟的檔案指標,offset為相對偏移seek_set表示從檔案起始位置開始計算seek_cur表示當前位置開始計算

seek_end表示從檔案尾部開始計算

例如:定位到20位元組的位置 fseek(fp,20,seek_set)

定位當前位置後的20位元組 fseek(fp,20,seek_cur)定位到倒數第十個位元組 fseek(fp,-10,seek_end)

要在檔案內進行來回跳躍性的處理,可以用多個變數記住多個位置

14樓:殘月冷風

在vb中實現可能要簡單點

c語言中檔案指標怎樣向前移動一個位元組

15樓:

你是用c標準i/o庫函式的話,

(1)檔案定位:

檔案定位指讀取或設定檔案當前讀寫點,所有的通過檔案指標讀寫資料的函式,都是從檔案的當前讀寫點讀寫資料的。

常用的函式有:

#include

int fseek(file *stream, long offset, int whence);

fseek 設定當前讀寫點到 offset 處,

whence 可以是 seek_set,seek_cur,seek_end,這些值決定是

從檔案頭、當前點和檔案尾計算偏移量 offset.

你可以定義一個檔案指標file *fp,當你開啟一個檔案時,檔案指標指向開頭,

你要指到多少個位元組,只要控制偏移量就好,例如

相對當前位置往後移動一個位元組:fseek(fp,1,seek_cur);中間的值就是偏移量。

如果你要往前移動一個位元組,直接改為負值就可以:fseek(fp,-1,seek_cur)

c語言中的標頭檔案,c語言中,標頭檔案是什麼意思?有什麼用?

c語言中的標頭檔案 include。標頭檔案的作用 1.標頭檔案可以定義所用的函式列表,方便查閱你可以呼叫的函式。2.標頭檔案可以定義很多巨集定義,就是一些全域性靜態變數的定義,在這樣的情況下,只要修改標頭檔案的內容,程式就可以做相應的修改,不用親自跑到繁瑣的 內去搜尋。3.標頭檔案只是宣告,不佔記...

c語言中怎樣向檔案中新增資訊,c語言中怎樣向一個檔案中新增資訊

fopen函式開啟一個檔案,然後fwrite函式向檔案中寫內容 最後,fclose這個檔案 使用這幾個函式。int fseek file stream,long offset,int fromwhere long ftell file stream int rewind file stream 可以...

c語言中的標頭檔案大全及其作用,在C語言中,標頭檔案的作用是什麼?

在安裝c語言程式的資料夾d vc98 include裡面全部都是標頭檔案,下面是一部分 include 設定插入點 include 字元處理 include 定義錯誤碼 include 浮點數處理 include 檔案輸入 輸出 include 引數化輸入 輸出 include 資料流輸入 輸出 i...