链表:
节点定义:
//数据域的声明
typedef struct studentInfo
{
char name[16];
int age;
char sex;
int grade;
}stuInfo;
//节点的声明
typedef struct node
{
struct studentInfo data; //数据域
struct node *pNext; //指针域 ---> 存储下一节点地址
}Node;
文件操作:
Linux 下一切皆文件
(1)文件概述
一组相关数据的有序集合,称之为文件!
(2)文件指针
C语言中用一个指针指向文件,这个指针我们称之为文件指针,
通过这个指针我们就可以对文件进行各种操作
文件指针的一般定义形式:
FILE *指针变量名称;
注意:
FILE 必须大写,它是由系统定义的结构,该结构含有文件名,文件状态和文件当前位置等信息
编写程序时可不必在意这些细节
(3)文件的打开和关闭
打开文件
读写文件
关闭文件
其中,文件内部的数据为了标记文件的结束,文件结尾处有一个宏定义的 EOF(End Of File)
结束符号,判断文件有没有读取完毕,就是判断 EOF 的值
文件打开:fopen()
FILE *fopen(const char *path, const char *mode);
path:文件所在的路径
mode:打开文件的方式
打开文件失败,则返回 NULL
系统自动打开和关闭的五个标准文件
文件号 文件指针
0 stdin(标准输入)
1 stdout(标准输出)
2 stderr(标准错误)
3 stdaux(标准辅助)
4 stdprn(标准打印)
文件关闭:fclose()
int fclose(FILE *stream);
返回值:正常返回 0 ,出错返回非 0
关闭文件则断开文件指针与文件之间的联系,也即禁止再对文件进行操作
不关闭文件,可能会导致有些数据不会保存到磁盘。
文件的使用方式:
r 读
w 写
a 追加
t 文本文件 b 二进制文件 + 读和写
mode
r 读取 必须保证文件存在
w 写入 不存在时,新建文件,存在时则清空文件内容,重写写入
a 追加 是在文件末尾添加数据
w+ r+ 读写操作
rb+ 已读写形式打开二进制文件
wt+ 以读写形式打开文本文件
(4)文件读写操作
fgetc()/fputc():字符读写函数
fgets()/fputs():行读写函数
fread()/fwrite():块读写
字符读写函数:
字符输出:fputc
int putc(int c, FILE *stream); //写文件
字符输入:fgetc
int getc(FILE *stream); //读文件
行读写:
行读取:从文件流读取size个字节到 s
char *fgets(char *s, int size, FILE *stream);
行写入:将字符串 s 写入文件
int fputs(const char *s, FILE *stream);
块读写:
块读取:fread()
块写入:fwrite()
//从右向左读取
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
//从左向右写入
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
ptr:指向要输入/输出数据存储区的指针
size:每个要读写的数据块的大小
nmemb:要读写的块的个数
fp:要操作的文件指针
//将文件指针置于文件首
void rewind(FILE *stream);