文件讀寫位置標志為什麼不是指針
① c++ 文件讀操作 位置指針問題
換行的地方有個回車符和換行符,各佔一個位元組了,
#include"stdafx.h"
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#definePAUSEintpause;
scanf("%d",&pause);
int_tmain(intargc,_TCHAR*argv[])
{
FILE*pFile;
pFile=fopen("me.txt","r");
chara[5],b[5],c[5];
memset(a,0,5);
memset(b,0,5);
memset(c,0,5);
fread(a,1,4,pFile);
printf("%s ",a);
intpos;
pos=ftell(pFile);
printf("pos=%d ",pos);
fread(b,1,4,pFile);
//文件指針從當前位置前進2個位元組,因為有個
fseek(pFile,2,SEEK_CUR);
printf("%s ",b);
pos=ftell(pFile);
printf("pos=%d ",pos);
fread(c,1,4,pFile);
printf("%s ",c);
pos=ftell(pFile);
printf("pos=%d ",pos);
fclose(pFile);
PAUSE;
return0;
}
② C裡面文件的位置指針是指什麼
位置指針是用來表示在文件中讀取和寫入位置的指針。文件打開時文件指針應在文件開始。Append 方式打開,文件指針應在文件尾。
想讓文件指針指到文件開始,用 rewind(fp)即可。
用fseek ( fp , 0 , SEEK_SET ); 也可。
當然,用 long int ftell ( FILE * stream ); 找文件指針偏移位置,偏移為0,就在開始,不為0,仍需用 rewind,或 fseek 移動指針到開始。
③ c語言中char ch=0;與char ch='0';與char ch='\0';的意思是什麼
char說明數據類型是字元型,ch是變數名(可稱為欄位)。
fgetc()
使用舉例:
表示從D:\\demo.txt文件中讀取一個字元,並保存到變數ch中。
拓展資料
在文件內部有一個位置指針,用來指向當前讀寫到的位置,也就是讀寫到第幾個位元組。在文件打開時,該指針總是指向文件的第一個位元組。使用fgetc
函數後,該指針會向後移動一個位元組,所以可以連續多次使用fgetc讀取多個字元。
注意:這個文件內部的位置指針與C語言中的指針不是一回事。位置指針僅僅是一個標志,表示文件讀寫到的位置,也就是讀寫到第幾個位元組,它不表示地址。文件每讀寫一次,位置指針就會移動一次,它不需要你在程序中定義和賦值,而是由系統自動設置,對用戶是透明的。
【示例】在屏幕上顯示
D:\\demo.txt
文件的內容。
在D盤下創建demo.txt文件,輸入任意內容並保存,運行程序,就會看到剛才輸入的內容全部都顯示在屏幕上。
該程序的功能是從文件中逐個讀取字元,在屏幕上顯示,直到讀取完畢。
程序第14行是關鍵,while
循環的條件為(ch=fgetc(fp))
!=
EOF。fget()
每次從位置指針所在的位置讀取一個字元,並保存到變數
ch,位置指針向後移動一個位元組。當文件指針移動到文件末尾時,fget()
就無法讀取字元了,於是返回
EOF,表示文件讀取結束了。
④ 關於c語言文件讀寫問題和文件讀寫標志的疑問
先回答你第一個問題:因為fgets(out,5,fp)讀取的是你輸入字元串以後的字元,那是不確定的,所以會出現亂碼,
第二個問題:w+是將文件以讀寫方式打開,如果裡面存有內容將會清零,以供寫入
第三個問題:當你輸入完字元以後文件的指針是指向末尾的,所以fget(out,5,fp)得到的是不是從頭開始的字元,而是從最後一個字元以後開始的,
所以,你的問題就很容易解決了,只要讓文件指針重新指向文件頭即可:在putchar(10)後面加上一句:rewind(fp)就可以了
⑤ c語言文件類型指針
c語言文件類型指針是通過FILE *fp; 這種形式進行定義的。
關於FILE結構在VC6中有如下定義:
#ifndef_FILE_DEFINED
struct_iobuf{
char*_ptr;//文件輸入的下一個位置
int_cnt;//當前緩沖區的相對位置
char*_base;//指基礎位置(即是文件的起始位置)
int_flag;//文件標志
int_file;//文件描述符id
int_charbuf;//檢查緩沖區狀況,如果無緩沖區則不讀取
int_bufsiz;//文件緩沖區大小
char*_tmpfname;//臨時文件名
};
typedefstruct_iobufFILE;
#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中
intfseek( FILE *fp, long offset, int whence); //移動文件指針到指定位置
void rewind(FILE *fp); //回到文件頭
long ftell(FILE *fp); //得到當前文件偏移位置
fclose(fp); //關閉文件,刷新緩存到物理磁碟上
⑥ C語言的文件的位置指針
網上給你找的,你看看哈。注意形象化的概念。
-----------------------------
在學習文件定位函數之前,需要了解一下文件位置指針的概念。文件位置指針只是一個形象化的概念,在C語言中用文件位置指針來表示文件當前讀或寫的數據在文件中的位置。當通過fopen函數打開文件時,可以認為文件位置指針總是指向文件的開頭、第一個數據之前。
當文件位置指針指向文件末尾時,表示文件結束。當進行讀操作時,總是從文件位置指針所指的位置開始,去讀其後的數據,然後位置指針移到尚未讀的數據之前,以備指示下一次的讀(或寫)操作。當進行寫操作時,總是從文件位置指針所指位置去寫,然後移到剛寫入的數據之後,以備指示下一次輸出的起始位置。
「文件指針」和「文件位置指針」是兩個不同的概念。
文件指針是指在程序中定義的FILE類型的變數,通過fopen函數調用給文件指針賦值,使文件指針和某個文件建立聯系(這種聯系實際上是通過fopen函數說明使用文件的方式),C語言中通過文件指針實現對文件的各種操作。
摘自:東北大學出版社李一波編著《新概念C語言》
--------------------------------------
⑦ 文件指針和文件內部指針的區別
開頭那段文字表述得已經很清楚了。文件指針是由fopen函數賦值的,它實際上是指向一個文件信息結構體的指針,這個結構體在打開文件時由系統創建,其中就包含了「文件內部指針」——指向文件下一個字元的指針。但是操作的時候,所謂文件內部指針對用戶是透明的,我們只要通過文件指針就可以把讀、寫文件的事情搞定了……
⑧ 【C++】 文件指針回到開頭
在定位前對流狀態標志進行清除就可以了:
inf.clear();
inf.seekg(0,ios::beg);
還有一種解決辦法是
inf.close();
inf.open(file1,ios::in|ios::binary); 關閉文件,然後再打開該文件
⑨ 文件指針是什麼文件指針的值又是什麼
在文件操作系統中,同時打開的文件個數是受限的,因此在操作系統中對於文件的操作專門設置了一個區域,這個區中為每個文件操作開設了一塊操作數據區,其中每個區對應一個文件操作,記錄文件位置,當前文件指針位置等,如果進行文件操作需要獲得系統分配的一塊有效的數據區,這個數據區的編號就是文件句柄,在c中是FILE*類型
操作數據區中,有一個文件指針,存放當前可讀寫文件位置,是一個位元組計數值,在打開當前文件後,這個指針指向文件第1個字元,取值是0,那麼如果馬上讀寫文件都是從文件第1個位元組開始,假定寫入或讀取了1個位元組內容,文件指針在操作完成後自動變為1,指向下一個可操作的位置。文件指針可以順序後移(增加值)也可以前移(減少值)當然要藉助特殊函數。
假定要獲取文件尺寸,可以在打開文件後(文件指針內容為0)利用文件指針操作函數(比如feek)令文件指針轉到文件尾部,這時文件指針取值就是文件的實際位元組數了。
⑩ 讀寫位置指針和文件位置指針是一回事嗎
從哪裡來的這么兩個詞?讀寫位置指針 和 文件位置指針
C中操作一個文件 ,只會有一個文件指針的啊 , 這個指針指向一個結構體,結構體中有關於當前打開文件的各種信息。
如有問題,可以把你看到或讀到的內容,粘出一些來,供分析。