文件的简单操作

文件概述:
文件是指存储在外部介质(如磁盘磁带)上的数据的集合。
操作系统是以文件为单位对数据进行管理的。

1.内存与文件的联系:

其中,程序数据区就是指内存。

2.文件的分类:
我们按数据的组织形式可以把文件分为两类,一类是ASCII型文件(文本文件),一类是二进制式文件。
我们知道,数据在内存中就是以二进制形式存储,二进制文件其实就是原封不动的把数据输出到文件中,而ASCII文件则经过了一些转换,具体区别如下例子:

把数据转换为 ASCII文件,需要把每一个字符都转换为ASCII码存储。
两者的优缺点一眼便知,不多赘述。

FILE函数:
c语言中定义了FILE函数方便我们对文件进行操作,FILE是typedef下的定义,它是一个结构体类型,FILE结构体内封装了很多成员,此处列出它的原型作为了解,但在实际编写代码中,FILE是已经被系统定义好的,可以直接使用。

typedef struct{
    short level;   /*缓冲区“满”或“空”的程度*/
    unsigned flags; /*文件状态标志*/
    char fd;        /*文件描述符*/
    unsigned char hold; /*如无缓冲区不读取字符*/
    short bsize;       /*缓冲区的大小*/
    unsigned char *buffer;/*数据缓冲区的位置*/
    unsigned char *curp;/*指针,当前的指向*/
    unsigned istemp;/*临时文件,指示器*/
   short token;/*用于有效性检查*/
}FILE;

就像调用其它结构体一样,调用FILE,系统就会在内存中开辟出一块FILE类型文件缓冲区,用于存放文件的有关信息。

下面举两个例子:

FILE F[5];//FILE型数组,该数组可以存放5个文件。
FILE *fp;//FILE型指针,fp指向一个文件。

文件的打开与关闭:
对【打开】的理解:
(1)分配给打开文件一个FILE 类型的文件结构体变量,并将有关信息填入文件结构体变量;
(2)开辟一个缓冲区;
(3)调用操作系统提供的打开文件或建立新文件功能,打开或建立指定文件;

【注意】这里要说明一点,c语言将计算机的所有硬件设备也看作是文件,比如屏幕文件,键盘文件等;ANSIC标准规定,在执行程序时系统先自动打开键盘、屏幕、错误三个文件。这三个文件的文件指针分别是:标准输入stdin、标准输出stdout和标准出错 stderr。
标准输入流是从终端的输入;
标准输出流是向终端的输出;
标准出错输出流是当程序出错时将出错信息发送到终端;

文件打开函数:fopen(文件名,使用文件方式)

FILE *p;
p=fopen("txt1","w");//p指向 txt1 这个文件;

返回值:打开成功返回指向该文件的指针,打开失败返回空指针;

常用使用文件方式:

r,w,a的区别:
用r方式打开文件:这个文件一定要预先就存在,否则提示出错;
用w方式打开文件:这个文件可以不存在。如果存在该文件,清空文件内容;如果不存在,建立一个新文件;
用a方式打开文件:综合r与w的功能,并且写入数据时数据会写入在文件末端,即追加;但用a方式应满足该文件预先存在,否则提示出错;

【注意】
计算机从ASCII文件读入字符时,遇到回车换行符,系统把它转换为一个换行符,在输出时把换行符转换成为回车和换行两个字符。在用二进制文件时,不进行这种转换,在内存中的数据形式与输出到外部文件中的数据形式完全一致,一一对应。

文件关闭函数:fclose(文件指针)
返回值:关闭成功返回0;否则返回EOF;
注意文件的打开与关闭是相伴随的,文件打开而没有及时关闭就会可能导致文件数据丢失;

文件相关操作函数:

1.字符级读写函数

fgetc(文件指针)
作用:从文件光标位置处读取一个字符;
返回值:读取成功返回该字符,读取失败返回EOF,另外读取到文件结尾处也会返回EOF;

fputc(字符,文件指针)
作用:把字符写入文件中,写入位置为文件光标所在位置;
返回值:写入成功,返回写入字符的ASCII码,否则返回0;

2.字符串级读写函数

fgets(指向字符串的指针,字符个数n,文件指针)
作用:从文件中读取一个字符串并保存内存中;
其中,指向字符串的指针指向字符数组,用来存储读入的字符串;字符个数n表示最多可以读入n-1个字符,因为字符串还需要一个结束标志’\0’;

fgets读取结束标志:
(1)读够了n-1个字符,读取结束;
(2)未读够n-1个字符,但读取遇到了换行符,读入换行符,结束读取;
(3)未读够n-1个字符,但读取遇到了文件结束标志EOF,读取结束;
返回值:未读取到文件结尾时,返回读入的字符串的首地址;如果读取到了文件结尾,返回NULL;

fputs(字符串,文件指针)
作用:把字符串写入文件中;
返回值:写入成功返回0;否则返回非0;

3.常规数据文件输入输出函数

fscanf(文件指针,“格式控制列表”,地址列表) //注意格式控制列表需要加双引号
作用:正读,即把文件内容写入到内存中;
返回值:正常读取返回读取数据的个数,否则返回EOF;

fprintf(文件指针,“格式控制列表”,地址列表)
作用:倒读,即把内存中数据写入到文件中;
返回值:读取成功返回写入的字符数,否则返回负值;

4.块级读写函数

fwrite(数据块指针,数据块大小,数据块个数,文件指针)
作用:正读;
返回值:写入成功返回写入的数据块的个数,否则返回0;

fread(数据块指针,数据块大小,数据块个数,文件指针)
作用:倒读;
返回值:如果未读取到文件结尾,返回读取数据块的个数,读取到文件结尾,返回NULL;

5.文件定位函数

rewind(文件指针)
作用:使文件内置指针移动到文件的开头;

ftell(文件指针)
作用:获取文件内置指针的当前值;

fseek(文件指针,偏移量,起始位置)
作用:使文件内置指针按照我们的要求自由移动;
其中,起始位置有 0,1,2 三个位置可选,0表示从文件头位置开始,1表示从当前文件内置指针位置开始,2表示从文件结束位置开始;偏移量带正负号,分别表示向后移动还是向前移动;每次偏移的大小可以用sizeof函数获取数据文件大小,也可以自己设置;

feof(文件指针)
作用:用于检测该文件内置指针是否指向文件结束位置;
返回值:如果检测是,返回1;否则返回0;

内容概要:该论文聚焦于6G通信中20-100GHz频段的电磁场(EMF)暴露评估问题,提出了一种基于自适应可重构架构神经网络(RAWA-NN)的预测框架。该框架通过集成权重分析模块和优化模块,能够自动优化网络超参数,显著减少训练时间。模型使用70%的前臂数据进行训练,其余数据用于测试,并用腹部和股四头肌数据验证模型泛化能力。结果显示,该模型在不同参数下的相对差异(RD)在前臂低于2.6%,其他身体部位低于9.5%,可有效预测皮肤表面的温升和吸收功率密度(APD)。此外,论文还提供了详细的代码实现,涵盖数据预处理、权重分析模块、自适应优化模块、RAWA-NN模型构建及训练评估等内容。 适合人群:从事电磁兼容性研究、6G通信技术研发以及对神经网络优化感兴趣的科研人员和工程师。 使用场景及目标:①研究6G通信中高频段电磁暴露对人体的影响;②开发更高效的电磁暴露评估工具;③优化神经网络架构以提高模型训练效率和预测精度。 其他说明:论文不仅提出了理论框架,还提供了完整的代码实现,方便读者复现实验结果。此外,论文还讨论了未来的研究方向,包括扩展到更高频段(如300GHz)的数据处理、引入强化学习优化超参数、以及实现多物理场耦合的智能电磁暴露评估系统。建议读者在实际应用中根据具体需求调整模型架构和参数,并结合真实数据进行验证。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值