当前位置:首页 » 编程语言 » 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这样的函数一个字符一个字符去读。当发现与关键字首字符相同的字符时,查看这个字符与后面的字符串是否能组成关键字,如果不能则继续查找,直到文件结束。