在C语言中,文件的存取方式

有哪两种存取方式呢?文件的存取又是以什么为单位的?称为什么文件?多谢大家帮忙啦... 有哪两种存取方式呢?文件的存取又是以什么为单位的?称为什么文件?多谢大家帮忙啦 展开
 我来答
匿名用户
推荐于2018-02-28
展开全部
首先,你的理解有点偏差,文件的存取方式不是由开发语言决定的,而是由文件系统决定的,linux是用C语言开发的,其文件系统的存取方式有三种
1. 顺序存取

顺序存取是按照文件的逻辑地址顺序存取。

�0�1 固定长记录的顺序存取是十分简单的。读操作总是读出上一次读出的文件的下一个记录,同时,自动让文件记录读指针推进,以指向下一次要读出的记录位置。如果文件是可读可写的。再设置一个文件记录指针,它总指向下一次要写入记录的存放位置,执行写操作时,将一个记录写到文件 末端。允许对这种文件进行前跳或后退N(整数)个记录的操作。顺序存取主要用于磁带文件,但也适用于磁盘上的顺序文件。

�0�1 可变长记录的顺序文件,每个记录的长度信息存放于记录前面一个单元中,它的存取操作分两步进行。读出时,根据读指针值先读出存放记录长度的单元 。然后,得到当前记录长后再把当前记录一起写到指针指向的记录位置,同时,调整写指针值 。

由于顺序文件是顺序存取的,可采用成组和分解操作来加速文件的输入输出。

2. 直接存取(随机存取法)

很多应用场合要求以任意次序直接读写某个记录。例如,航空订票系统,把特定航班的所有信息用航班号作标识,存放在某物理块中,用户预订某航班时,需要直接将该航班的信息取出。直接存取方法便适合于这类应用,它通常用于磁盘文件。

为了实现直接存取,一个文件可以看作由顺序编号的物理块组成的,这些块常常划成等长,作为定位和存取的一个最小单位,如一块为1024字节、4096字节,视系统和应用而定。于是用户可以请求读块22、然后,写块48,再读块9等等。直接存取文件对读或写块的次序没有限制。用户提供给操作系统的是相对块号,它是相对于文件开始位置的一个位移量,而绝对块号则由系统换算得到。

3. 索引存取

第三种类型的存取是基于索引文件的索引存取方法。由于文件中的记录不按它在文件中的位置,而按它的记录键来编址,所以,用户提供给操作系统记录键后就可查找到所需记录。

通常记录按记录键的某种顺序存放,例如,按代表健的字母先后次序来排序。对于这种文件,除可采用按键存取外,也可以采用顺序存取或直接存取的方法。信息块的地址都可以通过查找记录键而换算出。实际的系统中,大都采用多级索引,以加速记录查找过程。
_叶子妞妞_
推荐于2016-04-11 · TA获得超过3672个赞
知道小有建树答主
回答量:327
采纳率:83%
帮助的人:89.2万
展开全部
在C语言中,打开文件可以指定文件的存取方式。
打开用函数fopen。
其原型为:FILE * fopen(const char * path,const char * mode);
需要包含头文件stdio.h。
当打开成功时会返回FILE *指针,用于后续文件的读写关闭等操作。
参数path为文件的路径及文件名。
mode即存取方式,包括:
1 r 以只读方式打开文件,该文件必须存在。
2 r+ 以可读写方式打开文件,该文件必须存在。
3 rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。
4 w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
5 w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
6 a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
7 a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
8 wb 只写打开或新建一个二进制文件;只允许写数据。
9 wb+ 读写打开或建立一个二进制文件,允许读和写。
10 ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-06-23
展开全部
文件存是#include<stdio.h>
void main()
{
FILE*fp;
if((fp=fopen("ok.txt,"w""))==NULL)
{
printf("文件创建失败\n");
exit(0);

}
printf("创建文件成功");;
}
int i;
char sty[80];
FILE*fp;
if((fp=fopen("test","w"))==NULL)
{
printf("随便写");
exit(1);
}
gets(sty);
for(i=0;sty[i];i++)
{
fputc(sty[i],fp);
fclose(fp);
return 0;

}//这是写入 哈

//读出这是变哈fwrite为fread

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-06-23
展开全部
估计你说的是文本存储和二进制存储
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式