當前位置:首頁 » 編程語言 » C語言獲取文件指針的方法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

C語言獲取文件指針的方法

發布時間: 2022-08-06 11:25:30

A. c語言,指針的指針獲取和傳遞數據。

一般來說,這種的,並不是只讀取一個結構 而是文件中有一系列的不定個數的數據。

全讀回來 給主函數用

這樣 主函數中 定義

structstudent*stu;

調用

inttotal=ReadStudentInfo("path/file.bin",&stu);


然後 在ReadStudentInfo函數中

FILE*fp=fopen(filename,"rb");
//根據文件大小獲取總的數據個數
intsize;
fseek(fp,0,SEEK_END);
size=ftell(fp);
fseek(fp,0,SEEK_SET);

inttotal=size/sizeof(structstudent);

//然後申請內存
*pStudent=(structstudent*)malloc(sizeof(structstudent)*tatol);
//讀數據
fread(*pStudent,sizeof(structstudent),total,fp);
fclose(fp);
returntotal;

到主函數 就可以通過

stu[0] 到stu[total -1]來訪問讀到的數據了。

B. C語言的文件的位置指針

網上給你找的,你看看哈。注意形象化的概念。
-----------------------------
在學習文件定位函數之前,需要了解一下文件位置指針的概念。文件位置指針只是一個形象化的概念,在C語言中用文件位置指針來表示文件當前讀或寫的數據在文件中的位置。當通過fopen函數打開文件時,可以認為文件位置指針總是指向文件的開頭、第一個數據之前。

當文件位置指針指向文件末尾時,表示文件結束。當進行讀操作時,總是從文件位置指針所指的位置開始,去讀其後的數據,然後位置指針移到尚未讀的數據之前,以備指示下一次的讀(或寫)操作。當進行寫操作時,總是從文件位置指針所指位置去寫,然後移到剛寫入的數據之後,以備指示下一次輸出的起始位置。

「文件指針」和「文件位置指針」是兩個不同的概念。

文件指針是指在程序中定義的FILE類型的變數,通過fopen函數調用給文件指針賦值,使文件指針和某個文件建立聯系(這種聯系實際上是通過fopen函數說明使用文件的方式),C語言中通過文件指針實現對文件的各種操作。

摘自:東北大學出版社李一波編著《新概念C語言》
--------------------------------------

C. C語言 如何通過文件指針獲得文件名

在tc20中,一旦你成功打開一個文件,他將返回一個文件指針。

FILE*fp;

fp=fopen("abc.dat",文件狀態(如w,r,r+));

當上面的操作成功後文件指針fp就會賦予你打開文件的最基本信息!

FILE結構在TurboC在stdio.h文件中有以下的文件類型聲明:

typedefstruct

{

shortlevel;/*緩沖區「滿」或「空」的程度*/

unsignedflags;/*文件狀態標志*/

charfd;/*文件描述符(句柄)*/

unsignedcharhold;/*如無緩沖區不讀取字元*/

shortbsize;/*緩沖區的大小*/

unsignedchar*buffer;/*數據緩沖區的位置*/

unsignedar*curp;/*指針,當前的指向*/

unsignedistemp;/*臨時文件,指示器*/

shorttoken;/*用於有效性檢查*/

}FILE;

為管理你打開的文件,操作系統為所有的文件創建一個打開文件信息的結構數組---文件控制塊(FCB),而文件描述符就承擔了訪問與之對應的文件控制塊的使命,他在c中就充當文件句柄。每一個文件都需要唯一的一個標識,這樣才能管理若干個文件

FCB他存貯這你所有打開文件的信息,而只有通過文件句柄才能訪問與之對應的FCB,從而訪問你的文件.

文件句柄,就是FCB結構數組的下標

所以,通過文件指針獲得文件名的操作路線:

FILE*fp;

charfd=fp->fd;

FCB*fcb;

char*filiname=fcb[fd].filiname

利用FCB(文件控制塊)操作的例子見:

http://www.asme.net/blog/user/postcontent.jsp?neighborId=8747&kindLevel=1&kindId=24655&postId=40710&readSg=1

D. C語言如何得到打開的txt文件中游標的指針位置

函數getpos()

E. C語言 指針方法

#include<stdio.h>

int main()

{

int a,b,c,s[3],t;

int *x,*y,*z;//定義指針變數

x=&a;//將a的地址賦給指針x,下同

y=&b;

z=&c;

scanf("%d%d%d",x,y,z);

s[0]=*x;//將指針x所指向的變數值賦給數組s的第一個元素;依次類推

s[1]=*y;

s[2]=*z;

for(int i=0;i<3;i++)//冒泡排序

for(int j=0;j<3-i-1;j++)

if(s[j]<s[j+1])

{

t=s[j];

s[j]=s[j+1];

s[j+1]=t;

}

for(int i=0;i<3;i++)

printf("%d ",s[i]);

return 0;

}

F. C語言讀取文件數據

先用getline或fgets讀取數據到一個字元串中,這個串定義的長一點,保證夠用就行。

舉例:

char str[1024]。

fgets( str , sizeof(str), fp ),//fp打開的文件指針。

然後調用for循環去讀取串的的數據,假設你的分隔符是空格,遍歷str,遇到空格就得到一個數據,然後繼續遍歷,直到str尾。

再去fgets數據,再遍歷,即可得到所有的數據。

拓展資料:

C語言是一門通用計算機編程語言,廣泛應用於底層開發。

C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

G. 怎麼使用C語言指針讀取文件中的內容,求代碼。

因為兄弟文件格式是一行一行的, 且每行開頭是一個關鍵字,然後後面是相應數據, 所以哥哥是這么想的, 比如要讀"AB2345"這個關鍵字對應行的內容, 那首先用變數或者宏定義定義下來, 然後從文件開頭開始, 一個字元一個字元的掃描, 對每一行的開始的6個字元組成的關鍵字讀出來跟"AB2345"這個關鍵字比較, 判斷是否是想要讀取的, 如果是, 那麼通過ftell, fseek 兩個函數分別得出當前指針的位置和適當移動指針的位置, 最後讀取相應內容輸出來!
詳細代碼如下:
#include <<a href="https://www..com/s?wd=stdio.h&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">stdio.h</a>>
#include <<a href="https://www..com/s?wd=stdlib.h&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">stdlib.h</a>>
#include <<a href="https://www..com/s?wd=string.h&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">string.h</a>>
#define BUF_SIZE 1024
#define KEY "AB2345"
#define KEY_LEN 7
int main()
{
int ch = 0;
int first = 1;//開始時的標志,因為是一個字元一個字元的掃描
int flag = 0;//文件開頭是不是所要讀內容的標志
int count = 0;//遇到'\n'的個數
int pre_pos = 0, cur_pos = 0;//前一次和當前文件指針的位置
char buf[BUF_SIZE] = {0};
FILE *fp = NULL;
fp = fopen("test.txt", "r");
if (fp == NULL)
{
printf("Cann't open the file!\n");
exit(1);
}
else
{
while ((ch = fgetc(fp)) != EOF)
{
if (first)
{
//若要讀取的內容在文件開頭就有時
//移動指針到文件開頭
fseek(fp, -1L, SEEK_CUR);
fgets(buf, KEY_LEN, fp);
if (strcmp(buf, KEY) == 0)
{
first = 0;
flag = 1;
continue;
}
else
{
first = 0;
}
}
if (ch == '\n')
{
count++;//遇到'\n'的個數
pre_pos = cur_pos;//上次遇到'\n'時文件指針的位置
cur_pos = ftell(fp);//當前遇到'\n'時文件指針的位置

//文件開頭內容符合要求的就適當移動指針位置
//然後讀取輸出來
if (count == 1 && flag == 1)
{
fseek(fp, 0L, SEEK_SET);
memset(buf, 0, sizeof(buf));
fgets(buf, cur_pos - 1, fp);
printf("%s\n", buf);
}
//之後內容符合要求的就適當移動指針位置
//然後讀取輸出來
else
{
memset(buf, 0, sizeof(buf));
fgets(buf, KEY_LEN, fp);
if (strcmp(buf, KEY) == 0)
{
fseek(fp, (-1) * (KEY_LEN - 1), SEEK_CUR);
memset(buf, 0, sizeof(buf));
fgets(buf, cur_pos-1-pre_pos, fp);
printf("%s\n", buf);
}
}
}
}
}
fclose(fp);
return 0;

H. C語言如何讀取文件

一個c語言讀寫文件程序:
#include
"stdio.h"
#include
<stdlib.h>
main()
{
FILE
*fp1;//定義文件流指針,用於打開讀取的文件
FILE
*fp2;//定義文件流指針,用於打開寫操作的文件
char
text[1024];//定義一個字元串數組,用於存儲讀取的字元
fp1
=
fopen("d:\\a.txt","r");//只讀方式打開文件a.txt
fp2
=
fopen("d:\\b.txt","w");//寫方式打開文件a.txt
while(fgets(text,1024,fp1)!=NULL)//逐行讀取fp1所指向文件中的內容到text中
{
puts(text);//輸出到屏幕
fputs(text,fp2);//將內容寫到fp2所指向文件中
}
fclose(fp1);//關閉文件a.txt,有打開就要有關閉
fclose(fp2);//關閉文件b.txt
}

I. 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); //關閉文件,刷新緩存到物理磁碟上

J. C語言或者C++獲取文件中關鍵字所在位置的指針

1.當文件不太大的時候,可以先打開文件,然後讀取文件所有內容到一個緩沖區里,然後使用strstr來查找關鍵字在緩沖區哪個位置,對應文件位置用fseek就可以。
2.當文件大的時候,因為你要的是字元串,為了防止漏掉,你最好不要用緩沖區去一部分一部分套。你必須打開文件,然後用fgetc這樣的函數一個字元一個字元去讀。當發現與關鍵字首字元相同的字元時,查看這個字元與後面的字元串是否能組成關鍵字,如果不能則繼續查找,直到文件結束。