1.Linux下的文件类型
1、7种文件类型:
b 块设备文件 -------> 存储类设备(硬盘)
c 字符设备文件 ------->如输入输出设备(鼠标键盘显示器...)
d 目录文件 ------->文件夹
- 普通文件 ------->xxx.c xxx.h xxx.txt xxx.jpg xxx.mp4 a.out
l 软链接文件 ------->快捷方式
s 套接字文件 ------->网络通信
p 管道文件 ------->进程间通信
ls -l ---->ll
d rwxrwxr-x 2 linux linux 4096 1月 29 2024
文件类型 文件操作权限 链接个数 用户名 组名 文件大小 文件最后被修改的时间 20240129/ 文件名称
r:read
w:write
x:可执行权限
-:无权限
rwx:自己对文件的读写执行权限
rwx:同组用户对文件的读写执行权限
r-x:其他人对文件的读写执行权限
2、文件操作思想
(1). 打开文件
(2). 读写文件
(3). 关闭文件
3.文件操作的方法
Linux下的2种文件操作方法:
I : input O: output ----->文件
1. 标准IO:
C标准库提供的一套对文件操作的操作方法------->库函数
2. 文件IO:
Linux内核提供的一套对文件操作的操作方法------->系统调用
4. 标准IO
(1)打开文件
fopen
FILE *fopen(const char *pathname, const char *mode);
功能:打开一个文件并获得一个文件流指针
参数:
pathname:打开得文件的文件名地址
mode:打开的方式
"r" 以只读的方式打开
"r+" 以读写的方式打开
"w" 以只写的方式打开,文件存在则清空,文件不存在则创建
"w+" 以读写的方式打开,文件存在则清空,文件不存在则创建
"a" 以追加写的方式打开,文件不存在创建
"a+" 以读写的方式打开,文件不存在创建,,文件存在追加写
返回值:
成功:文件流指针:FILE *
失败:NULL
流:字节流
文件流:数据从文件流入流出体现出来的字节流
标准IO: FILE ---》文件流
FILE * ---》文件流指针----》已打开文件
(2)读/写文件
fgetc/fputc 、fgets/fputs、fread/fwrite
int fputc(int c, FILE *stream);
功能:向文件中写入一个字符
参数:
c:要写入的字符
stream:要写入的文件的文件流指针
返回值:
成功:写入的字符的ASCII值
失败:EOF (-1)
int fgetc(FILE *stream);
功能:从文件中读取一个字符
参数:
stream:要读取的文件的文件流指针
返回值:
成功:读到的字符的ASCII值
失败:EOF
读到文件末尾:EOF
int fputs(const char *s, FILE *stream); 不能读写二进制文件
功能:向文件中写入字符串(不会写入'\0'字符)
参数:
s:字符串首地址
stream:要写入的文件流指针
返回值:
成功:非负的整形数据
失败:EOF(-1)
char *fgets(char *s, int size, FILE *stream);
功能: 从文件中读取一行数据
参数:
s : 用来存放读取到数据的内存空间首地址
size:希望从文件中读到的字节数
stream:要读取的文件流指针
返回值:
成功:返回s空间的首地址
失败:NULL
读到文件末尾:NULL
(3)关闭文件
fclose
(4)man手册
第一章节:Linux命令
第二章节:系统调用
第三章节:库函数
(5)主函数传参
./a.out aaa bbb ----->实参
形参:主函数中的参数
argc : 程序运行时,给主函数传递的参数个数 3
argv : 指针数组:argc个指针,分别指向了给主函数传递的实参
argv[0] ---->"./a.out"
argv[1] ---->"aaa"
argc[2] ---->"bbb"
(6)- 普通文件
文本文件: 1.txt xxx.c xxx.h
20250809 --->'2''0''2''5''0''8''0''9'
二进制文件:xx.jpg a.out xxx.png xxx.mp4
2025 ---->0000 0000 0000 0000 0000 0111 1110 1001