c语言学习8(结构体、联合、枚举,fopen,文件读写,文件指针操作,删除、重命名函数)

如何计算结构体的字节数:
结构体成员的顺序会影响它的总字节数,在设计结构体时如果成员的顺序合理可以大大节约内存。
内存对齐:
假定第一个成员从零地址开始,存储每个成员地址编号必须能被它的字节数整除,如果不能整除则填充空字节。
内存补齐:
结构体的总字节数,必须是它最大成员的整数倍,如果不是则在末尾填充空字节。
在Linux系统下计算结构体的对齐和补齐时如果成员的字节数超过4字节则按4字节计算,window系统按实际情况计算。
#pragma pack(n) 设置补齐、对齐时的最大字节数,n <= 默认。

联合:
联合与结构的使用方法基本一致,与结构的区别是所有成员共用一块内存,一个成员的值改变,其它成员的值也会随之变化。
判断大小端。

枚举:
枚举就是把一种数据类型可以能出的值全部罗列出来,取一个有意义的名字,除此以该类型的变量再等于其它值就是非法的(愿望)。
枚举常量的值默认从0开始,逐渐加1,如果某个设置的值,后面的在它的基础上逐渐加1。

FILE *fopen(const char *path, const char *mode);
功能:打开或创建文件
path:文件的路径
mode:打开模式
r 以只读权限打开文件,如果不存在则打开失败。
r+ 在r的基础上增加写权限
w 以只写权限打开文件,如果文件不存在则新建,如果文件存在则清空。
w+ 在w的基础上增加读权限
a 以只写权限打开文件,如果文件不存在则新建,如果文件存在不清空,新写入的数据在文件的末尾。
a+ 在a的基础上增加读权限
以上方式是以文本形式操作文件,在它们基础上加b表示以纯二进制形式操作文件。
返回值:结构指针

文件指针与文件描述符相互转换,文件指针的结构体中有文件描述符。
int fileno(FILE * stream)
FILE * fdopen(int fd, const char * mode)

二进制读写:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
功能:把内存中的数据写入到文件中
ptr:内存地址
size:一次写入多少字节
nmemb:写入多少次
stream:文件指针,fopen的返回值
返回值:成功写入的次数

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
功能:从文件中读取数据到内存
size:一次读取多少字节
nmemb:读取多少次
stream:文件指针,fopen的返回值
返回值:成功读取到的次数

文本读写:
int fprintf(FILE *stream, const char *format, …);
功能:以文本形式写入数据到文件
stream:要写入的文件
format:占位符和提示信息
…:变量名
返回值:成功写入的字节数

int fscanf(FILE *stream, const char *format, …);
功能:从文件中读取数据到变量
stream:要读取的文件
format:占位符
…:变量名地址
返回值:成功读取到的变量的个数

int fclose(FILE *fp);
功能:关闭文件

int fseek(FILE *stream, long offset, int whence);
功能:设置文件的位置指针
stream:要设置的文件
offset:偏移值
whence:基础位置
SEEK_SET 文件开头
SEEK_CUR 当前位置
SEEK_END 文件末尾
返回值:成功返回0,失败返回-1。

void rewind(FILE *stream);
功能:把文件位置指针设置到开头

long ftell(FILE *stream);
功能:获取文件位置指针的位置
返回值:第几个字节

int feof(FILE *stream);
功能:检查文件位置指针是否到达末尾。
返回值:非0说明到达文件末尾

char *fgets(char *s, int size, FILE *stream);
功能:从文件中读取一行字符串

int fputs(const char *s, FILE *stream);
功能:写入一个字符串到文件,会自动添加一个\n
返回值:成功读取到的字符个数

int fputc(int c, FILE *stream);
功能:写入一个字符串
返回值:成功返回定稿的字符,失败返回-1。

int fgetc(FILE *stream);
功能:从文件中读取一个字符
返回值:失败返回-1

int remove(const char *pathname);
功能:删除文件
返回值:成功返回0,失败返回-1。

int rename(const char *old, const char *new);
功能:重命名文件
返回值:成功返回0,失败返回-1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值